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à!