Я так понимаю, что вы хотели печатать введённый текст наоборот.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String slovo = sc.nextLine();
int b = slovo.length() - 1; // Начинаем с последнего символа
while (b >= 0) { // Идём до начала строки
char a = slovo.charAt(b);
System.out.print(a);
b--;
}
sc.close(); // Закрываем сканер после завершения
}
}
test = tset
Я так же поубирал лишние переменные, коих у Вас есть)
В Вашем случае
boolean y
Не обновлялась от итерации к итерации. Вы так же использовали бесконечный цикл
while(true)
в котором производили вычитание b и получение символа по значению в переменной. У Java в строке по определению не может быть -1 символ, а бесконечный цикл доходит до того, что у Вас b становится равна -1. Вот тут вы и получали ошибку.
Правльный логический подход - сделать цикл с условием завершения (когда b < 0, завершить).