【问题标题】:Java: String from scanner.next() and .equals() comparison failureJava:scanner.next() 和 .equals() 比较失败的字符串
【发布时间】:2013-02-16 00:38:03
【问题描述】:

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

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

这返回了错误。我添加了 trim()

String MOVE = input.next(); // I type in "MOVE N"
System.out.print(MOVE.equals("MOVE N"));

还是假的。

有什么想法吗?谢谢

【问题讨论】:

  • System.out.println ("'" + MOVE + "'") 的输出是什么?
  • 你的代码调试了吗?

标签: java string input comparison java.util.scanner


【解决方案1】:

你可能想要nextLine()next() 方法只会返回下一个 token,默认情况下它将是下一个单词(即它在空格处中断)。

下一次,您应该添加对 System.out.println(MOVE); 的调用来帮助您诊断此问题 - 这样您就可以看到结果只是 "MOVE" 而不是 "MOVE N"。 (然后您可以查阅文档以获取 Scanner.next()...)

此外,我强烈建议您开始为变量遵循 Java 命名约定 - 例如,move 而不是 MOVE

【讨论】:

  • 扫描仪问题已成为聚会的常客
  • 谢谢,nextLine() 有效。不用担心命名约定,我确实遵循它们,为了示例,这被过度简化了
  • @njl:你为什么要为你的真实代码遵循命名约定,然后在示例代码中违反它们?您正在尝试与许多其他开发人员交流:遵循约定有助于使交流更加顺畅。
【解决方案2】:
String MOVE = input.nextLine ();  // I type in "MOVE N"
MOVE = MOVE.trim ();
System.out.print (MOVE.equals ("MOVE N"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多