Nextline和扫描程序忽略Java中的行?

时间:2017-03-19 02:46:53

标签: java arraylist

Scanner s = new Scanner (System.in);
while(!s.nextLine().isEmpty()){

a.add(i, s.nextLine());
i++;
}

System.out.println(a.size());

我创建了一个Arraylist,因为我复制并将未知数量的字符串粘贴到要扫描的ide中,这可能是行尾的问题。

我通过粘贴它们来测试三条线。例如,采用以下示例:

Hello
World
Again

我会复制并粘贴它们,Arraylist的大小将是2,它将是占据0位的世界。

我自己的理论是他在while循环中取第一行来检查它是否为空,然后第二行被放入Arraylist中,第三行被检查并且空白被放入第二个位置。

然后以三行的格式粘贴字符串,然后按Enter键一次,这可能会影响行尾。有没有人对正在发生的事情有任何见解?谢谢,

1 个答案:

答案 0 :(得分:1)

你需要"捕获"要测试的线而不是丢弃它。每次拨打s.nextLine()都会读取一行。

Scanner s = new Scanner (System.in);
String line;
while(!(line = s.nextLine()).isEmpty()){
    a.add(i, line);
    i++;
}

System.out.println(a.size());

或者正如其他人所提到的,您可以使用s.hasNext()作为循环条件,如下所示:

Scanner s = new Scanner (System.in);
while(s.hasNext()) {
    a.add(i, s.nextLine());
    i++;
}

System.out.println(a.size());