【问题标题】:String.equals() method not matching in Windows [closed]Windows中的String.equals()方法不匹配[关闭]
【发布时间】:2019-07-25 17:27:34
【问题描述】:

我在 macOS 上使用 Eclipse 制作了一个 Java 程序,它运行良好。当我将它切换到 Windows 上的 Eclipse 时,我开始收到错误。

失败条件是在 mac 上运行良好的 if 语句。在 Windows 上,我尝试调试问题。如果我打印出来,scanner.next() 会给出正确的输出。如果我比较它但是它不起作用。我还尝试将输出复制并粘贴到我的条件中,但它仍然不起作用。我尝试包括是否有我看不到的 \n 并且这也不起作用。下面是它的代码。

Scanner scanner = new Scanner("text from file with line 1 being 'TRAILING PERFORMANCE'");
toggleDelimiter(scanner); // helper method that switches the scanner to read by lines or tokens

if(!scanner.next().equals("TRAILING PERFORMANCE")) {
// Throw error here if the first line is not TRAILING PERFORMANCE
}

条件应该返回 false 并且不会为我正在使用的文件引发错误,因为我知道它有效。如前所述,完全相同的代码在带有 macOS 的 Eclipse 上运行良好。

编辑: 我现在也尝试将 \n、\n\r 和 System.lineSeparator() 附加到“TRAILING PERFORMACE”的末尾,但它仍然不起作用。

【问题讨论】:

  • 错误是什么?
  • 要调试这个,你应该将scanner.next()提取到一个字符串变量中,然后遍历字符串来查看每个位置存在哪些字符。
  • 这可能是您正在读取的文件的问题,该文件是在 mac OS 上创建的,因此行尾与 windows 不同。
  • @Nexevis 我的代码抛出了错误,所以没关系。它根本不应该进入 if 语句的主体。
  • @HovercraftFullOfEels 帮助我到达了某个地方。看起来最后有一个额外的换行符,但“TRAILING PERFORMACE\n”仍然不起作用。

标签: java windows macos java.util.scanner equals


【解决方案1】:

在得知 Windows 会在我不做任何事情的情况下更改换行符后,我能够在 PDFBox(我用来阅读 PDF)中找到方法 setLineSeparator() 并将换行符设置为“\n " 所以它能够像以前一样工作。

【讨论】:

    猜你喜欢
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 2016-01-29
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 2019-09-12
    相关资源
    最近更新 更多