Мне нужно создать список массивов из списка 1000 чисел в текстовом файле. Java - PullRequest
0 голосов
/ 15 апреля 2020

Числа не в одной строке, каждая из которых содержит 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 ]

1 голос
/ 15 апреля 2020

Вы должны использовать класс-оболочку Integer.

Изменить ArrayList<int> на ArrayList<Integer>

Аналогично,

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

вы можете прочитать больше о коллекции примитивных типов здесь и здесь

Кроме того, когда вы читаете данные из файла, используя 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();
}

Надеюсь, это поможет.

0 голосов
/ 15 апреля 2020

Поскольку вы утверждаете, что читаете из текстового файла, вы можете использовать класс java.nio.file.Files, чтобы прочитать его, а затем использовать *1002* stream API , чтобы отобразить каждую строку текстового файла в Integer и соберите все эти Integer s в 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();
}
0 голосов
/ 15 апреля 2020

У вас есть несколько ошибок в этом коде. Во-первых, используйте 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();




}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...