Provando il tuo codice mi esce questo errore:
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)
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:
/*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);
}
}