Ad esempio grazie a queste linee non esci mai dal for
codice:
if(z==y || z==i) {
do {
z++;
if(array.length-1<z)
z=0;
dopo tot iterazioni arrivi al punto che y=array.length-1 e z=array.length-1. Grazie a z++, z diventa array.length e di conseguenza, essendo array.length-1<array.length=z, z prende il valore 0 e la guardia del ciclo for non viene mai violata. Continua a ciclare su z, ma appena arriva a array.length-1, si azzera e quindi va in loop infinito. Non ho letto il codice attentamente, ma basta entrare nel for successivo, solo se l'indice del for attuale e diverso dagli indici dei for precedenti. (Eheh, detto cosi' sembra un casino, ma guarda l'esempio sotto che vale piu' di mille parole).
codice:
//faccio quello che devo fare e arrivo al momento in cui ho la parola
char[] out;
for(int i=0; i<parola.length(); i++) {
for(int j=0; j<parola.length(); j++) {
if(j!=i) {
for(int z=0; z<parola.length(); z++) {
if(z!=i && z!=j) {
out = new char[]{parola.charAt(i),parola.charAt(j),parola.charAt(z)};
System.out.println(out);
}
}
}
}
}
//Resto della classe