【发布时间】:2020-04-29 08:17:54
【问题描述】:
我正在编写一个从输入文本文件中获取行的程序。 它应该是由换行符分隔的单行上的一组字符串。因此,我的输入文件如下所示:
0110\n011\n0111\n100001
但是,当我打印出每一行时,它会输出为一个完整的字符串,包括换行符 - '0110\n011\n0111\n100001'
这是我的代码 - 当它是静态字符串时它适用于 Scanner,但当它来自文件时则不行。
File input = new File(input.txt);
Scanner scanner = new Scanner(input);
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
当我将扫描仪更改为读取 String s 时,例如 Scannerscanner = new Scanner(s) for a String s = "0110\n011\n0111\n100001",它可以正常工作并打印出 4 行,这意味着它识别 \n 字符,如下所示:
String s = "0110\n011\n0111\n100001";
Scanner scanner = new Scanner(s);
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
唯一阻碍我的是我们必须用\n 分隔输入文件字符串。这是我们项目的要求。
知道为什么会这样吗?我的文本文件错了吗,有没有办法将其拆分为\n? Scanner 读取文件中的行与静态字符串不同吗?我应该切换到 BufferedReader 吗?我无法解决这个问题。我阅读了一些论坛和手册,但找不到任何内容。如果我可以做任何事情或提供其他任何东西,请告诉我。
【问题讨论】:
-
不要贴代码图片,直接放在问题里就行了。
-
在文本文件中
\n是两个字符:\和n,而不是一个换行字符,这是Scanner在您调用nextLine()时所寻找的.在 Java 字符串中,\n是用于换行符的 Java 字符串文字转义序列,由 Java 编译器解析。从文本文件中删除\n并简单地将 4 个值写入 4 行。 -
@Amongalen 谢谢,我是新来的,感谢您的指导!
-
@Andreas 啊,这是有道理的。谢谢!不幸的是,我们的项目要求我们在字符串之间使用 \n...所以看起来我可能只是在每次有 \n 时将字符串分开。
-
@jarticus 我相信你误解了分配,他们确实需要换行符,而不是文本文件中的
\+n对。
标签: java string java.util.scanner newline