Java:来自scanner.next()和.equals()的字符串比较失败

njl*_*njl 1 java string comparison input java.util.scanner

我有一个从扫描仪读取的输入,然后我将其与硬编码的字符串变量进行比较

String MOVE = input.next();  // I type in "MOVE N"
MOVE = MOVE.trim();
System.out.print(MOVE.equals("MOVE N"));
Run Code Online (Sandbox Code Playgroud)

这返回了false.我添加了trim()

String MOVE = input.next(); // I type in "MOVE N"
System.out.print(MOVE.equals("MOVE N"));
Run Code Online (Sandbox Code Playgroud)

还是假的.

有任何想法吗?谢谢

Jon*_*eet 11

你可能想要nextLine().该next()方法将返回下一个标记,默认情况下将是下一个标记(即它在空格处断开).

下次,您应该添加一个调用来System.out.println(MOVE);帮助您诊断它 - 这样您就可以看到结果只是"MOVE"代替"MOVE N".(然后你会咨询文档Scanner.next()......)

另外,我强烈建议您开始遵循变量的Java命名约定 - 所以move不要MOVE举例.

  • @njl:为什么你会遵循真实代码的命名约定,但是为了示例代码却违反它们?您正在尝试与许多其他开发人员进行通信:以下约定有助于使通信更顺畅. (3认同)