Salve a tutti.
Sto cercando di imparare java e ho scritto questo breve codice:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.lang.*;
import javax.swing.JOptionPane;
public class Legge {
public static void main(String [] args) throws FileNotFoundException, IOException {
// TODO Auto-generated method stub
int Quante = -1;
int wLen = 0;
boolean isAnagramma;
String strCerca = new String("OCSA");
String cW = new String("");
// Array
String[] dizionario = new String[1000000];
BufferedReader reader = new BufferedReader(new FileReader("dizionario.txt"));
String Parola = reader.readLine();
while(Parola!=null) {
Parola = reader.readLine();
if (Parola!=null) {
dizionario[++Quante] = Parola;
// System.out.println(dizionario[Quante]);
}
}
reader.close();
wLen=strCerca.length();
for (int k = 0; k <= Quante; k++)
{
// <<<<==== viene svolto una sola volta
if (dizionario[k].length()==wLen)
{
cW = dizionario[k];
isAnagramma = true;
if (strCerca.length() == cW.length())
//verifica anagramma
for (int i = 0; i < strCerca.length(); i++)
{
char c = strCerca.charAt(i);
int indice = cW.indexOf(c);
if(indice >= 0)
{
cW = cW.substring(0,indice) + cW.substring(indice+1);
}
else
{
isAnagramma = false;
}
}
if (isAnagramma)
{
System.out.println(dizionario[k]);
}
}
}
System.out.println(Quante);
}
}
Il codice, nella prima parte importa in un array (dizionario[]) le parole presenti in un file di testo (e questo lo fa correttamente).
Poi, dovrebbe :
leggere le parole dall'array
verificare se la lunghezza della parola del dizionario è uguale a quella di una stringa data "OACS", nel caso specifdico)
se vero, verificare se la parola "OACS" è anagramma di quella nel dizionario
se si, la stampa a video e continua fino alla fine
Il problema è che, pur essendo la variabile "Quante" pari a 683.748, il ciclo (contrassegnato da <<<==== viene seguito una sola volta .....
Non capisco il perchè.
Potreste darmi una mano ?
Grazie.
A margine:
Uso eclipse e vorrei sapere, impostati i breackpoint, ogni volta che si ferma l'esecuzione in basso viene selezionato il tab "Console". C'è un modo per far visualizzare di default il tab "Expressions" dove vedo i valori delle varibili in osservazione ?
P.S. per l'amministratore:
avevo postato ieri sera un analogo messaggio che però non trovo nella lista dei post. Se dovesse essere duplicato, il primo può essere cancellato.