Provando il tuo codice mi esce questo errore:
Si capisce molto bene che il motivo dell'errore è dovuto all'accesso all'array oltre i propri confini, causato quando nella dichiarazione del ciclo for definisci come condizione di fine ciclo i <= array.length. Nel tuo caso dovrebbe essere soltanto i < array.lenght, in quanto l'indicizzazione di un array in Java inizia da 0 e l'ultimo elemento è array.lenght - 1. Tuttavia il tuo codice nonostante questo continua a non funzionare e onestamente non capendo molto quello che fai all'interno del ciclo for ti propongo questa soluzione:codice:Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5 at java.lang.String.<init>(String.java:211) at java.lang.String.copyValueOf(String.java:2880) at Test.aNagramma(Test.java:25) at Test.main(Test.java:35)
codice:/*Scrivere un breve programma in java che dia in uscita tutte le possibili stringhe formate utilizzando una sola volta i caratteri 'c' ,'a' ,'r' ,'b' ,'o' ,'n' */ import java.util.Scanner; import java.io.*; import java.lang.*; public class Test { public static String parola; public static void aNagramma(String txt) { char [] array=txt.toCharArray(); int length=txt.length(); char temp; //caso base parola di una sola lettera if(txt.length()==1) { System.out.println("la parola ha solo una lettera.....che vuoi anagrammare?!?"); } else { for(int i = 0, j = array.length - 1; i <= j; i++, j--) { if (array[i] != array[j]) { System.out.println(array[i] + "!=" + array[j]); System.out.println("La parola non è un anagramma"); System.exit(0); } } System.out.println("La parola è un anagramma"); } } public static void main(String args[]) { Scanner s=new Scanner(System.in); System.out.print("Inserisci la parola da anagrammare: "); parola=s.next(); aNagramma(parola); } }

Rispondi quotando