【问题标题】:skip first number, reading int from file java跳过第一个数字,从文件 java 中读取 int
【发布时间】:2014-03-03 05:05:40
【问题描述】:

试图从文件中读取 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);

【问题讨论】:

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

标签: java file int java.util.scanner


【解决方案1】:

问题是你的

file.next();

删除它。

【讨论】:

  • 哦,忘了注意这个! :-)
【解决方案2】:

你需要改变

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

编辑

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

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

【讨论】:

  • 是的。当然,我自己还没有测试过这个确切的代码。但从理论上讲,它是有效的。
  • 试试这样的 int i = 0; while(file.hasNextInt()){ listtwo[i++] = file.nextInt(); }
  • 最后一行只用于数组而不是数组列表
【解决方案3】:

像这样使用 file.next();如果你有 file.hasNextInt() 将运行 twise 以避免这种用例。

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

【讨论】:

  • 同样的结果,还是会跳过
猜你喜欢
  • 1970-01-01
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 2023-04-01
相关资源
最近更新 更多