【发布时间】: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