使用scanner将行存储到数组中

时间:2014-05-15 04:26:00

标签: java java.util.scanner

我需要复制我拥有的数据,然后将其粘贴到java Eclipse Console输出窗口,这些数据包含一些行,每行都有一个单词。我不知道它有多少行。 我怎么能把线存储在一个数组中?我尝试了这段代码,但在粘贴数据后,我应该按两次键盘 Enter 键。它还存储偶数行(不是所有行)。我该如何解决?感谢

import java.util.ArrayList;

import java.util.Scanner;

public class SCAN {

    public static void main(String[] args) {
        ArrayList<String> lines = new ArrayList<String>();
        Scanner s = new Scanner(System.in);
        while(s.hasNextLine()){
            String line = s.nextLine();
            if(line.length() > 0) {
                lines.add(s.nextLine());
            } else {
                break;
            }
        }
        System.out.println(lines);
}
}

2 个答案:

答案 0 :(得分:4)

lines.add(s.nextLine());更改为lines.add(line);

这里发生的事情是你使用nextLine()两次。

因此,第一行读取并存储到line,但之后读取第二行存储到ArrayList,因此您存储的第一行不会存在ArrayList

  

我应该按两次键盘Enter键。

是的,你必须这样做,因为当你没有线路时,你正在打破循环。


如果要输入特定行,可以使用计数器作为行数。

您可以通过Scanner提示为计数器插入特定值。

    int i=0;
    while(s.hasNextLine()){
        String line = s.nextLine();i++;
        if(line.length() > 0) {
            lines.add(line);
        } else {
            //don't add empty Line
        }
    if(i==2)break;
    }

答案 1 :(得分:0)

尝试一下。

Scanner read=new Scanner(System.in);

for(int i=0; i<size; i++) {
    array[i]=read.next();
    array[i]+=read.nextLine();
}