как сначала объявить указатель массива, а потом инициализировать в Java - PullRequest
0 голосов
/ 21 октября 2018

Когда я хочу использовать массив для хранения входных данных из Scanner, но не знаю, сколько токенов в нем содержится, нет ли способов получить все входные данные, хранящиеся в массиве, с точно таким же размером, как утокены?

Ситуация такая.

    public static void main(String[] args){
         Scanner sc = new Scanner(System.in);

         int[] arr; // just declare not initialize
         int i = 0;


         while(sc.hasNextInt()){
                 arr[i++] = sc.nextInt(); // of course it would cause an error, 
                                          // but as I don't know how many tokens it has,
                                          // I can't initialize like 
                                          // int[] arr = new int[number of tokens] 
         } 
    }

В этой ситуации я сначала объявил некоторый указатель массива, arr, но не знал размер токенов, поэтому я не могинициализировать его.Вместо этого я искал способы - сначала создать указатель, затем сохранить все данные, а затем исходный указатель, указывающий массивы input-storage-array.

Разве не было бы способов для этого?

1 Ответ

0 голосов
/ 21 октября 2018

Если вы не уверены в нужном размере массива, вы можете использовать java.util.ArrayList вместо array.ArrayList внутренне состоит из массива и логики для изменения его размера в зависимости от необходимости.Пожалуйста, используйте приведенный ниже код для справки:

import java.util.*;

public static void main(String[] args){
     Scanner sc = new Scanner(System.in);

     List<Integer> arrList = new ArrayList<>(); // No need to specify size
     int i = 0;
     while(sc.hasNextInt()){
             arrList.add(sc.nextInt()); // it will take care of resizing the array internally based on the inputs
     } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...