Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java扫描程序正确读取\n字符串,但在扫描文件时不正确?_Java_String_Java.util.scanner_Newline - Fatal编程技术网

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
对。