繁体   English   中英

在方法中声明实例数组的数组大小

[英]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];
}

当您的代码被执行时,它的运行方式如下:

  1. static int size声明了变量size并将其值设置为0 ,这是int的默认值。
  2. 当您执行static int x[] = new int[size]size值为0。因此x[]初始化为大小为0的数组。 这一切都发生在main()被调用之前。
  3. 以后,将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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM