Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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 - Fatal编程技术网

Java 在运行时分配阵列的问题

Java 在运行时分配阵列的问题,java,Java,我在运行时分配数组时遇到问题,我的意思是 Scanner Scan = new Scanner(System.in); int size; int[] myarr = new int[size]; size = Scan.nextInt(); 这里的问题是数组大小没有任何更新 线索:这是我正在处理的一个类的简化版本,其中数组的大小作为参数传递给构造函数,我不能在主函数中声明数组。数组需要保留此类的属性。更改此属性 Scanner Scan = new Scanner(System.in); i

我在运行时分配数组时遇到问题,我的意思是

Scanner Scan = new Scanner(System.in);
int size;
int[] myarr = new int[size];
size = Scan.nextInt();
这里的问题是数组大小没有任何更新

线索:这是我正在处理的一个类的简化版本,其中数组的大小作为参数传递给构造函数,我不能在主函数中声明数组。数组需要保留此类的属性。

更改此属性

Scanner Scan = new Scanner(System.in);
int size;
int[] myarr = new int[size];
size = Scan.nextInt();

请注意,数组的大小是固定的,如果不创建新数组,则无法在运行时动态更改大小。

int[] myarr = new int[size];
变量大小已声明,但尚未初始化。在使用之前,应先对其进行初始化:

Scanner Scan = new Scanner(System.in);
int size = Scan.nextInt();
int[] myarr = new int[size];
注:

创建阵列myarr后,其大小无法更改。如果要更改大小,可以创建具有所需大小的新数组,或使用其他结构(如ArrayList)。
您在实例化数组后定义了大小。

如果您想频繁调整字段大小,您很可能不想使用数组,因为它无法调整大小。正如在上面的一条评论中提到的,您可以使用ArrayList。但是,它仍然是一个列表,在内部是一个数组:即使您不必手动调整它的大小,JVM也会在内部调整它的大小-这可能会导致运行时的不良行为,前提是调整大小是您的首要任务

如果经常调整列表的大小,您可能希望查看更动态的结构,例如LinkedList


然而,这一决定总是基于您将如何使用您的列表以及您的主要目标。

首先询问列表的大小。然后创建你的数组。你的期望都错了。Java是按值传递的。数组是静态类型,您无法调整它们的大小。为什么希望它更新?
Scanner Scan = new Scanner(System.in);
int size = Scan.nextInt();
int[] myarr = new int[size];
 Scanner Scan = new Scanner(System.in);
int size= Scan.nextInt();
int[] myarr = new int[size];