2014-03-03 136 views
0

试图从文件中读取int。我的问题是,我的代码读取第一行中的所有整数,但在接下来的行中跳过第一个数字。 为了说明我的文件具有这些数目: 1,4,6,7,8,11,如图9所示, 1,4,6,7,8,11,12, 2,4,6,7,11, 12,0,跳过第一个数字,从文件java中读取int

但是,当我使用下面的代码它只打印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); 
+1

@ambigram_maker错误。 'hasNext ...()'方法不会跳过任何内容。 –

回答

0

使用像这样的file.next();如果你有file.hasNextInt()是真的,可以避免使用其他情况。

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

同样的结果,它仍然跳过 – user3266210

2

的问题是你的

file.next(); 

删除它。

+0

哦,忘了注意这个! :-) – Astrobleme

1

您需要更改

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

至EDIT

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

在你的代码,它首先寻找下一个 “字” 的文本文件。 “if”语句然后告诉它在该第一个“单词”后面找到下一个int,因此它跳过该行的第一个数字。

+0

是的。当然,我还没有测试过这个确切的代码。但理论上,它的工作原理。 – fmi11

+0

对不起,我注意到了错误的代码。 – Astrobleme

+0

这只读一个数字,第一个 – user3266210

相关问题