Errore in esercizio di lettura/scrittura in File

di il
5 risposte

Errore in esercizio di lettura/scrittura in File

Ciao a tutti! Sto provando a risolvere un esercizio in Java ma ottengo sempre un errore. Il programma dovrebbe leggere da un file di ingresso delle parole e in un file d'uscita scrivere le parole lette con affianco il numero di occorrenze per ciascuna usando Scanner e Printwriter. Il codice che ho scritto è il seguente:
package jcontaparolefile;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.*;

public class ContaParoleFile {

	public static void main(String[] args) throws FileNotFoundException {

		File inputFile = new File("inputFile.txt");
		Scanner in = new Scanner(inputFile);
		PrintWriter out = new PrintWriter("outputFile.txt");
		
		ArrayList<String> ar = new ArrayList<String>();
		
		while(in.hasNextLine()) {
			ar.add(in.nextLine());
		}
		String temp;
		int cont = 0;
		
		for(int i=0; i<ar.size(); i++) {		
			temp = ar.get(i);				// scrivo l'i-esimo elemento dell'ArrayList ar nella variabile temp
			for(int j=0; j<ar.size(); j++) {
				if (ar.get(j)==temp) {		// se le due parole sono uguali:
					cont++;					// aumenta di 1 il contatore,
					ar.remove(j);			// rimuove l'elemento uguale alla stringa temporanea,
				}
			}
			out.println(temp + ": " + cont);// stampa il risultato
			cont=0;							// ripristina il contatore per la prossima parola
		}		
		
		out.close();
		in.close();
	}
}
Ho pensato di usare un'ArrayList in modo da verificare più facilmente la condizione di uguaglianza tra stringhe... Il problema è che, se nel file "inputFile.txt" scrivo, ad esempio:
ciao
ciao
come
come
va
come
va
ciao
nel file "outputFile.txt" ottengo:
ciao: 1
come: 1
va: 1
va: 1
Potreste aiutarmi a capire dove sbaglio? Non voglio l'esercizio risolto e basta altrimenti non ci capirei nulla, vorrei capire esattamente che tipo di errore/i sto commettendo... Grazie mille in anticipo a chi risponderà!

5 Risposte

  • Re: Errore in esercizio di lettura/scrittura in File

    Ciao,
    innanzitutto il tuo contatore partiva da 0, mentre in realtà è giusto che parta da 1, dal momento che appena prendi una stringa (ciclo for con la variabile i) devi immediatamente conteggiarla. Inoltre la j deve partire da 1 e non da 0, dato che la stringa in posizione 0 l'hai già considerata. Poi il confronto tra stringhe non si fa con == ma con il metodo equals.
    Correggendo queste cose dovrebbe funzionare.
  • Re: Errore in esercizio di lettura/scrittura in File

    Ciao e grazie mille per la risposta! Appena torno in possesso del mio PC proverò! Per il resto ti pare tutto corretto, o almeno sensato?
  • Re: Errore in esercizio di lettura/scrittura in File

    Sì direi che il tuo approccio vada bene: prima memorizzi tutto e poi analizzi. Un'altra idea potrebbe essere analizzare mentre leggi, ma il tuo metodo va benissimo.
  • Re: Errore in esercizio di lettura/scrittura in File

    Ciao minomic ti ringrazio ancora per il tuo intervento che mi ha aperto gli occhi sull'utilizzo del metodo equals(), ho provato e ora funziona tutto a meraviglia! Grazie ancora, gentilissimo
  • Re: Errore in esercizio di lettura/scrittura in File

    Prego, per altri dubbi siamo qui!

Devi accedere o registrarti per scrivere nel forum
5 risposte