编辑:这实际上变成了一个非常有趣的问题。在评论员的帮助下,我发布了一个自我解答。我应该提到我的项目使用的是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!");
}
}
exit
Thank you!
到目前为止,太好了。但是当我进入循环时,就会遇到麻烦:
asdf
input is "asdf"
false
exit
input is "exit"
false
exit
input is "exit"
false
最后一次检查"exit".equals("exit")
应该返回true
,而不是false
。我尝试在输入中使用trim()
,以防万一有一些换行的骷髅手……我到底想念什么?