Попробуйте заменить это:
if((a[0] == a[a.length -1]) && (a[1] == a[a.length])){
с этим:
if((a[0] == a[a.length - 2]) && (a[1] == a[a.length - 1])){
Массивы основаны на 0 в Java, поэтому последний элемент на самом деле .length - 1
. (Массив длины 3 будет иметь допустимые индексы [0, 1, 2]
- не [1, 2, 3]
.)
Edit:
Тем не менее, поскольку Брайан с тех пор поднял анте: я бы предложил один лучше, который не требует преобразования строки в массив символов - или требует создания новых строк с использованием подстроки.
String str = scan.nextLine();
if((str.charAt(0) == str.charAt(str.length() - 2)) && (str.charAt(1) == str.charAt(str.length() - 1))){
Кроме того, что произойдет, если ваша строка меньше 2 символов? (Вы можете проверить это ...)