[英]Declaring an array size of an instance array in a method
我正在尝试在方法中声明实例数组的数组大小。 有什么办法吗? 谢谢。
package javaapplication2;
public class JavaApplication2 {
static int size;
static int x[] = new int[size];
public static void main(String[] args) {
setSize(5);
for (int i = 0; i < 5; i++) {
x[i] = i;
}
}
static void setSize(int i) {
size = i;
}
}
这是更新的代码。 我得到一个数组超出范围错误。 我假设因为大小没有得到这样声明:
package javaapplication2;
public class JavaApplication2 {
static int x[];
public static void main(String[] args) {
setSize(5);
for (int i = 0; i < 5; i++) {
x[i] = i;
}
}
static void setSize(int i) {
x = new int[i];
}
}
我收到此错误。 线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:在javaApplication2.JavaApplication2.main(JavaApplication2.java:13)处为0 Java结果:1
全局变量在任何构造函数或main
方法之前进行初始化,因此在初始化数组时将size
缺省声明为0。
将size
设置为5不会帮助更改已初始化的数组。
同样在setSize()
方法中初始化数组,然后从声明的位置删除初始化程序。
static int size;
static int[] x;
static void setSize(int i) {
size = i;
x = new int[i];
}
当您的代码被执行时,它的运行方式如下:
static int size
声明了变量size
并将其值设置为0
,这是int
的默认值。 static int x[] = new int[size]
, size
值为0。因此x[]
初始化为大小为0
的数组。 这一切都发生在main()
被调用之前。 size
值更改为5
,由于x
数组已经初始化,因此它对x
数组的大小没有影响。 在这种情况下,您有两种选择:
size
设置为5: static int size = 5
, 要么
仅在调用setSize()
之后初始化x[]
:
static int size; static int x[]; public static void main(String[] args) { setSize(5); x = new int[size]; ... }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.