Java扫描程序正确读取\n字符串,但在扫描文件时不正确?
我正在编写一个程序,从输入文本文件中获取行。 它应该是由换行符分隔的单行上的一组字符串。因此,我的输入文件如下所示:Java扫描程序正确读取\n字符串,但在扫描文件时不正确?,java,string,java.util.scanner,newline,Java,String,Java.util.scanner,Newline,我正在编写一个程序,从输入文本文件中获取行。 它应该是由换行符分隔的单行上的一组字符串。因此,我的输入文件如下所示: 0110\n011\n0111\n100001 但是,当我打印每一行时,它会显示为一个完整的字符串,包括新行字符--“0110\n011\n0111\n100001” 这是我的代码——当它是一个静态字符串时,它可以很好地用于扫描器,但当它来自一个文件时就不行了 File input = new File(input.txt); Scanner scanner = new Sca
0110\n011\n0111\n100001
但是,当我打印每一行时,它会显示为一个完整的字符串,包括新行字符--“0110\n011\n0111\n100001”
这是我的代码——当它是一个静态字符串时,它可以很好地用于扫描器,但当它来自一个文件时就不行了
File input = new File(input.txt);
Scanner scanner = new Scanner(input);
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
当我将扫描器更改为读取字符串s时,如扫描器scanner=new scanner for a String s=“0110\n0111\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?扫描器读取文件中的行是否与静态字符串不同?我应该换成BufferedReader吗?我不能对这件事耿耿于怀。我浏览了一些论坛和手册,但没有找到任何内容。如果我能做什么,或者提供什么,请告诉我。
\n
是一个新行符号,在字符串中被解释为新行符号,但在您的文件中,您只需按enter键,这将为您创建新行,扫描仪将正确读取所有内容。不要发布代码图像,直接把它放到问题中。在文本文件\n
中有两个字符:\
和n
,而不是一个换行字符,这是当您调用nextLine()
时,Scanner
正在查找的字符。在Java字符串中,\n
是由Java编译器解析的换行符的Java字符串文字转义序列。从文本文件中删除\n
,只需将4个值写在4行上即可。@Amongalen谢谢,我是新来的,非常感谢您的指导@安德烈亚斯啊,这是有道理的。非常感谢。不幸的是,我们的项目要求我们在字符串之间使用\n。。。因此,似乎每次出现一个字符串时,我都会将字符串拆分。\n@jarticus我相信你误解了赋值,他们确实希望文本文件中有换行字符,而不是\
+n
对。