【问题标题】:Reading in line with blank space at end using java scanner class使用java扫描仪类在末尾读取空格
【发布时间】:2015-10-23 18:52:32
【问题描述】:

我正在帮助我的姐妹们编写一个简单的 java 程序,但我很难过。他们只学习了扫描仪类来读取文件内容,所以我认为他们应该使用扫描仪类。每行包含字母和可能的空格,我们希望将每一行存储在一个数组中。这工作得很好而且很花哨,直到其中一行包含以下内容:

abcde f (f 后面的空格应该读入 行)。

但是,scanner.nextLine() 似乎忽略了最后一个空格。我想我可以像这样将扫描仪分隔符设置为\n

scanner.useDelimiter("\n")

然后从那里使用scanner.Next(),但这似乎仍然不起作用。我用谷歌搜索并查看了一些 stackoverflow 问题。这里的这个问题似乎表明扫描仪类不容易做到这一点:How to read whitespace with scanner.next()

有什么想法吗?我觉得有一种简单的方法可以忽略。

这就是我的阅读方式:

While(scanner.hasNextLine(){
    String nextLine = scanner.nextLine();

使用上面的示例,我的字符串将显示为abcde f。它会在最后摆脱空白。 我也尝试过使用hasNextnext。 请原谅我的格式,我正在手机上编辑。

【问题讨论】:

  • 显示读取每一行的部分。确保不要使用任何trim()
  • 使用 Notepad++ 验证内容以确保文件的每一行中有哪些字符,Notepad++ 能够使用菜单栏中的“显示所有字符”功能以图形方式显示所有非打印字符。确保文件编码与原始源代码正确,因为在读取文件(UTF-8、ASCII 等)时,不同的文件编码可能会成为问题
  • 稍后会做,谢谢。我在找什么,出现空白?我不确定是文件问题,因为我们读入的文件是用来测试的。
  • 只是为了验证您要查找的空间是否出现在 linefeed 之后或之前。
  • 我在行尾的空白处看到了 LF。从快速谷歌搜索,似乎 \n 匹配这个。

标签: java java.util.scanner


【解决方案1】:

将您的文本文件保存为 ANSI 编码,然后重试。

scanner.nextLine() 将捕获行中的所有内容,包括空格。

scanner.next() 不会捕获空格,因为分隔符默认为 whitespace

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    相关资源
    最近更新 更多