从文本文件读取整数到数组列表

时间:2018-06-24 17:52:12

标签: java

我已经阅读了以下两个堆栈溢出文章:this onethis one。我已经遵循了答案,但仍然无处可寻。

我正在尝试读取文本文件(this one)并将其存储在ArrayList中。但是当我继续将ArrayList的内容打印到控制台时,什么也不会返回...

任何帮助将不胜感激。

public static void main(String[] args) throws IOException {

    ArrayList<Integer> test = new ArrayList<Integer>();

    Scanner textFileOne = new Scanner(new File("ChelseaVector.txt"));

    while (textFileOne.hasNext()) {
        if(textFileOne.hasNextInt()) {
            test.add(textFileOne.nextInt());
        } else {
        textFileOne.next();
        }
    }
    textFileOne.close();

    System.out.println(test);   
}

4 个答案:

答案 0 :(得分:0)

您需要跳过文件开头的[字符,并将定界符定义为]

Scanner textFileOne = 
    new Scanner(new File("ChelseaVector.txt")).useDelimiter(", ").skip("\\[");

答案 1 :(得分:0)

List<String> originalFile = new ArrayList<>(Files.readAllLines(Paths.get("ChelseaVector.txt")));
List<Integer> formattedFile = new ArrayList<>();

for (String line : originalFile ) {
    String newLine = line.replaceAll("[", "").replaceAll("]", "").replaceAll(" ", "");
    List<String> numbers = Arrays.asList(String.join(","));
    formattedFile.addAll(numbers);
}

System.out.println(formattedFile);

答案 2 :(得分:0)

您可以这样做

public static void main(String[] args) throws IOException {

        ArrayList<Integer> test = new ArrayList<Integer>();

        Scanner textFileOne = new Scanner(new File("ChelseaVector.txt")).useDelimiter(",");

        while (textFileOne.hasNext()) {
            if (textFileOne.hasNextInt()) {
                test.add(textFileOne.nextInt());
            } else {
                int number=Integer.parseInt(textFileOne.next().replaceAll("[\\[\\]]","").trim());
                test.add(number);
            }
        }
        textFileOne.close();

        System.out.println(test);
    }

答案 3 :(得分:0)

由于您的文件仅包含一行,因此我认为您不应使用循环。 如果您使用的是default implementation

,以下代码应该可以使用
String[] strings = Files.lines(Paths.get("ChelseaVector.txt")).findFirst().split("\\D+");
List<Integer> ints = Arrays.stream(strings).map(Integer::valueOf).collect(Collectors.toList());