java - 将文件中的整数读入数组列表

标签 java arraylist io

import java.util.Scanner;
import java.io.*;
import java.util.ArrayList;

public class Test
{
public static void main (String args[]) throws java.io.IOException
    {
    Scanner s = new Scanner(new File("filepath"));
    ArrayList<Integer> list = new ArrayList<Integer>();
    while (s.hasNext()){
        if(s.hasNextInt()){
            list.add(s.nextInt());
        }
    }
    s.close();
    System.out.println(list);
    }
}

我正在尝试从每行具有以下格式的文本文件中只读取整数:text integer text。

这是我目前所拥有的,但是当我编译并运行它时,无论出于何种原因,它都打印出永无止境的 []。

请注意,我更改文件路径只是为了将其上传到此处,这不是问题。

最佳答案

When I compile and run it prints never ending

这个循环是罪魁祸首:

while (s.hasNext()){
    if(s.hasNextInt()){
        list.add(s.nextInt());
    }
}

考虑当扫描器 hasNext 时会发生什么,但无论下一个标记是什么,它都不是 int。在这种情况下,您的循环将变为无限循环,因为循环体不消耗任何东西,使扫描器处于与循环开始时完全相同的状态。

要解决此问题,请将 else 添加到您的 if,读取 s.next(),并忽略结果:

while (s.hasNext()){
    if(s.hasNextInt()){
        list.add(s.nextInt());
    } else {
        s.next();
    }
}

关于java - 将文件中的整数读入数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22213916/

相关文章:

java - 是否可以用三种编程语言编写一个程序?

java - 为什么我必须配置 bean ResourceBundleMessageSource 才能使用 MessageSource

Java 并发实践 list 6.2

C#如何判断ArrayList是否包含具有特定属性的对象

java - 有谁知道Java中访问磁盘IO队列长度的方法吗?

c# - 如何将文件移动到目录而不替换文件?

java - 通过 Jsoup 登录 Facebook

java - Java中.add()返回一个 boolean 值,如何以列表形式返回

java - 包含java中的方法

c - 从每行包含一个值的“numbers.txt”中读取,然后用C语言按顺序输出这些数字(冒泡排序)