Редактировать: Это на самом деле превратилось в довольно интересную проблему. После некоторой помощи от комментаторов я разместил ответ. Я должен упомянуть, что мой проект в Unicode-16, который, похоже, был источником проблемы.
Проблема в том, что цикл не завершился, как ожидалось, в том, что кажется тривиально простым кодом:
import java.util.Scanner;
public class Lambda2 {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String input = in.nextLine();
while (!input.equals("exit")){
System.out.println("input is \""+ input + "\"");
System.out.println(input.equals("exit"));
input = in.nextLine();
}
System.out.println("Thank you!");
}
}
Прогон 1:
exit
Thank you!
Пока все хорошо. Но когда я вхожу в цикл, я сталкиваюсь с неприятностями:
Прогон 2:
asdf
input is "asdf"
false
exit
input is "exit"
false
exit
input is "exit"
false
Последнее, что я проверил "exit".equals("exit")
должно вернуть true
, а не false
. Я попытался использовать trim()
на своих входах на случай, если возникла какая-то черепная утка с новыми строками ... Что в мире мне не хватает ??