Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何先声明数组指针,然后在java中初始化_Java_Arrays_Initialization - Fatal编程技术网

如何先声明数组指针,然后在java中初始化

如何先声明数组指针,然后在java中初始化,java,arrays,initialization,Java,Arrays,Initialization,当我想使用一个数组来存储来自扫描仪的输入时, 但是,我不知道它包含多少令牌,难道没有任何方法可以获得存储在数组中的所有输入与令牌大小完全相同吗 情况是这样的 public static void main(String[] args){ Scanner sc = new Scanner(System.in); int[] arr; // just declare not initialize int i = 0;

当我想使用一个数组来存储来自扫描仪的输入时, 但是,我不知道它包含多少令牌,难道没有任何方法可以获得存储在数组中的所有输入与令牌大小完全相同吗

情况是这样的

    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,但不知道令牌的大小,因此无法初始化它。相反,我在寻找方法——首先制作指针,然后存储所有数据,然后原始指针指向存储在数组中的输入数组


有什么办法吗?

当您不确定所需数组的大小时,可以使用
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
     } 
}
import java.util.*;
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
List arrList=new ArrayList();//无需指定大小
int i=0;
while(sc.hasnetint()){
arrList.add(sc.nextInt());//它将根据输入在内部调整数组的大小
} 
}

您可以使用
ArrayList
。使用包装器(整数)或使用ArrayList将所有内容存储在列表中,读取所有输入后,将列表转换为数组。