跳过第一个数字,从文件java中读取int

时间:2014-03-03 05:05:40

标签: java file int java.util.scanner

尝试从文件中读取int。我的问题是我的代码读取了第一行中的所有整数,但是在后续行中它会跳过第一个数字。 为了说明我的文件有这些数字: 1,4,6,7,8,11,9, 1,4,6,7,8,11,12, 2,4,6,7,11,12,0,

但是当我使用下面的代码时,它只会打印1 4 6 7 8 11 9然后打印4 6 7 8 11 12然后2 ...它会跳过第一个号码。

Scanner file = null;
    ArrayList<Integer> listtwo = new ArrayList<>();
    try {
        file = new Scanner(new File(filename+".txt")).useDelimiter(",| ");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    while(file.hasNext()){
        if (file.hasNextInt()){ 
            listtwo.add(file.nextInt());
        }
        file.next();
    }
    for (Integer i: listtwo) System.out.println(i);

3 个答案:

答案 0 :(得分:2)

问题是你的

file.next();

删除它。

答案 1 :(得分:1)

您需要更改

while(file.hasNext()){
        if (file.hasNextInt()){ 
            listtwo.add(file.nextInt());
        }
        file.next();
    }

编辑

int i = 0;
while(file.hasNextInt()){
   listtwo[i++] = file.nextInt();
}

在您的代码中,它首先搜索下一个&#34;字&#34;在文本文件中。 &#34;如果&#34;然后声明告诉它在第一个&#34; word&#34;之后找到下一个int,因此它会跳过该行的第一个数字。

答案 2 :(得分:0)

像这个文件一样使用.next();如果你有file.hasNextInt()为真,则运行twise以避免使用其他情况。

     while(file.hasNext()){
    if (file.hasNextInt()){ 
        listtwo.add(file.nextInt());
    }else{
       file.next();
    }
}