我需要从txt文件中的1000个数字列表中创建一个数组列表。爪哇

时间:2020-04-15 16:20:24

标签: java arrays loops file arraylist

数字不是在同一行上,每行有1000行,每个数字都有一个数字。

这是我的代码,但是运行它时收到错误消息,它指向数组列表的int部分,并显示意外类型。

import java.util.ArrayList;
import java.io.*;
import java.util.Scanner; 
public class Homework4
{
   public static void main(String[] args) throws IOException
   {
      //Variables 
      int num;
      int temp; 

      Scanner kb = new Scanner(new File("number.txt"));
      ArrayList<int> list = new ArrayList<int>();
      while (kb.hasNextLine())
      {
         list.add(kb.nextLine());


      }      

      //Close File
      inputFile.close();




   }
}

3 个答案:

答案 0 :(得分:1)

您必须使用包装器类Integer

ArrayList<int>更改为ArrayList<Integer>

类似地,

long-> Long
double-> Double
char-> Character
float-> Float

您可以详细了解基本类型集合herehere

此外,当您从文件中读取数据时,使用kb.nextLine()返回String类型。您可以通过以下方式使用Integer将其转换为Integer.parseInt()类型。

list.add( Integer.parstInt( kb.nextLine() ) );

下一部分是,关闭资源。 您尚未通过名称inputFile声明变量。它必须改为kb

kb.close();

完整代码如下

public static void main(String[] args) throws IOException {
    Scanner kb = new Scanner(new File("number.txt"));
    ArrayList<Integer> list = new ArrayList<>();
    while (kb.hasNextLine()) {
        list.add(Integer.parseInt(kb.nextLine()));
    }
    kb.close();
}

希望这会有所帮助。

答案 1 :(得分:1)

由于您声称正在读取文本文件,因此可以使用类java.nio.file.Files来读取它,然后使用Java的stream API将文本文件的每一行映射到Integer并将所有这些Integer收集到java.util.List中,如以下代码所示:

Path path = Paths.get("path-to-your-file");
try {
    List<Integer> integers = Files.lines(path) // throws java.io.IOException
                                  .map(Integer::parseInt)
                                  .collect(Collectors.toList());
    System.out.println(integers);
}
catch (IOException x) {
    x.printStackTrace();
}

答案 2 :(得分:0)

该代码中有几个错误。首先,对Integer基本类型使用int对象包装。接下来,您需要使用String方法将读取的Integer.parseInt()解析为整数类型。并关闭Scanner实例而不是未定义的文件变量。 尝试以下代码:

import java.util.ArrayList;
import java.io.*;
import java.util.Scanner; 
public class Homework4{

public static void main(String[] args) throws IOException
{
    //Variables
    int num;
    int temp;

    Scanner kb = new Scanner(new File("number.txt"));
    ArrayList<Integer> list = new ArrayList<>();
    while (kb.hasNextLine())
    {
        list.add(Integer.parseInt(kb.nextLine()));


    }

    //Close File
    kb.close();




}

}