考虑代码:
import java.util.*;
public class TestClass
{
public static void main(String[] args)
{
Scanner input= new Scanner ("34\n567");
while(input.hasNext())
{
System.out.println(input.nextLine());
}
input.close();
}
}
我得到的输出:
34
567
当我尝试按nextLine()
读取字符串时,它不应该像这样读取它,因为它必须仅在行分隔符处终止,并且\n
不是Java中的行分隔符。
那么这是怎么发生的?
答案 0 :(得分:1)
试试这个
String s = "a\r\nb";
for (String str : s.split(System.getProperty("line.separator"))) {
System.out.println(str);
}
System.out.println("Length:"+s.split(System.getProperty("line.separator")).length);
\r\n
代表新行。
输出
a
b
Length:2
答案 1 :(得分:0)
nextLine()基于正则表达式" \ r \ n | [\ n \ r \ u \ u2028 \ u2029 \ u0085]"。这接受了java支持的平台的任何换行符,并且不限于此实际运行的jvm实例的平台。事实上,java中用于检测换行符的大多数方法都是这样工作的。因此,确定换行符应如何定义并不正确。