Perchè invochi aggiungVolta solo se l'ha già trovato.Originariamente inviato da GHoldenBoy
perchè mi restituisce 2 e non 3? perchè al secondo controllo positivo non aumenta il "volte"??
Perchè invochi aggiungVolta solo se l'ha già trovato.Originariamente inviato da GHoldenBoy
perchè mi restituisce 2 e non 3? perchè al secondo controllo positivo non aumenta il "volte"??
alla costruzione della parola volta è inizializzato a 1 e pensavo di doverne aumentare il valore quando avviene un match positivo (volta sarà +1 se la chiave è già presente nel HashMap).
Tu dici che dovrei fare un' aggiungVolte anche dopo che ho inserito per la prima volta la parola? così volte non andrebbe a 2 anche se effettivamente la parola appare una volta sola??
p.s. grazie mille per l'aiuto che mi stai dando e per la disponibilità.. Questo dovrebbe essere un problema già più semplice ma non riesco a capire dove erro.
Ma tu fai il put di parol.numVolte() e non di volte.Originariamente inviato da GHoldenBoy
alla costruzione della parola volta è inizializzato a 1 e pensavo di doverne aumentare il valore quando avviene un match positivo (volta sarà +1 se la chiave è già presente nel HashMap).
Tu dici che dovrei fare un' aggiungVolte anche dopo che ho inserito per la prima volta la parola? così volte non andrebbe a 2 anche se effettivamente la parola appare una volta sola??
pensavo fosse giusto perchè il metodo è così definito nella classe parola
codice:public int numVolte(){ return volte; }
No, non è giusto, perchè sono due variabili diverse. In questo caso volte è un campo di istanza della classe ParolaF, e in base agli output che ottieni, si può dire che è inizializzata a 0.Originariamente inviato da GHoldenBoy
pensavo fosse giusto perchè il metodo è così definito nella classe parola
codice:public int numVolte(){ return volte; }
Devi sapere che numVolte() si riferisce al campo di istanza, non ad una variabile che dichiari in un secondo momento al di fuori del suo ambiente.
Ho cambiato un po' di cose e credo di ottenere i valori che cercavo!!![]()
![]()
Ho risolto tutto è gestitendo con un unica classe (e non più due) Indexer e gestendo la parte che mi dava dei problemi così:
dove volta dell'else è una costante int =1 (sicuro che al primo ingresso il dato sarà presente solo una volta.codice:if(controlloFile && scans.hasNext()){ do{ //recupero la parola e elimino gli ultimi due caratteri specifici del file analizzato (\n) riga= scans.nextLine(); parola= riga.substring(0, riga.length()-2); int valoreVolte= 0; if (tabellHash.containsKey(parola)) { valoreVolte= tabellHash.get(parola); valoreVolte= valoreVolte+1; //System.out.println("trovata parola "+parola+" gia' "+valoreVolte+" volte"); tabellHash.put(parola, valoreVolte); //System.out.println("Reinserita parola "+parola+" con valore: "+valoreVolte); } else { i++; tabellHash.put(parola, volta); System.out.println("inserita parola numero "+i); } }while(scans.hasNextLine()); }
Per ora il controllo non mi sta dando errori, era così che mi dicevi di fare Vincenzo?
Avete dubbi. pensate che l'algoritmo così studiato possa dare errori??
p.s. comunque ringrazio VincenzoTheBest e unomichisiada per la mano
Si, adesso in sostanza va bene, anche se puoi anche risparmiare l'uso di variabili come valore e valoreVolte. Poi non so l'indice i a cosa serva.Originariamente inviato da GHoldenBoy
Per ora il controllo non mi sta dando errori, era così che mi dicevi di fare Vincenzo?