В этой задаче есть две проблемы.
Как читать пользовательский ввод, пока не нажата '#', и как инвертировать массив символов (String).
Проверить это
public static void main(String[] args) throws IOException {
String chars = "";
char inChar = 0;
System.out.println("Enter Character and press Enter: ");
while (inChar!='#') {
inChar = (char)System.in.read();
if (inChar=='\n'){
continue;
}
chars += inChar;
}
System.out.println("Input: " + chars);
System.out.print("Output: ");
for (int i=chars.length()-2; i>=0; i--){
System.out.print(chars.charAt(i));
}
}
Редактировать: Спасибо @DevilsHnd. Код обновлен с помощью System.in.read () вместо сканера.
В цикле while код считывает введенные пользователем данные до тех пор, пока не будет нажата клавиша «#». Java не может читать нажатия клавиш, если вы не используете GUI (swing, awt) или библиотеку JNI C ++. Таким образом, код читает пользовательский ввод при нажатии Enter.
Если пользователь вводит #, то цикл прерывается. Для всех остальных символов персонаж добавляется в финальную строку. Поскольку System.in.read () считывает также новые строки (\ n), код не добавляет их в окончательную строку.
Для второй проблемы код повторяется столько раз, сколько длина финальной строки. String и печатает символы, начиная с последнего.
Обратите внимание, что итерация начинается с символа в позиции length-2, это потому, что последний символ String равен '#', поэтому его не следует печатать на выходе.