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

时间:2015-03-19 20:45:44

标签: java

我试图在方法中声明实例数组的数组大小。有什么办法吗?谢谢。

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];

}

}

我收到此错误。线程&#34; main&#34;中的例外情况java.lang.ArrayIndexOutOfBoundsException:0 在javaapplication2.JavaApplication2.main(JavaApplication2.java:13) Java结果:1

3 个答案:

答案 0 :(得分:3)

全局变量在任何构造函数或main方法之前初始化为,因此在初始化数组时默认将size声明为0。

size设置为5不会有助于更改已初始化的数组。

答案 1 :(得分:1)

也在setSize()方法中初始化数组,并从声明位置删除初始化器。

static int size;
static int[] x;

static void setSize(int i) {
    size = i;
    x = new int[i];
}

答案 2 :(得分:1)

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

  1. static int size声明变量size并将其值设置为0,这是int的默认值。
  2. 执行static int x[] = new int[size]size的值为0.因此x[]初始化为大小为0的数组。这一切都发生在调用main()之前。
  3. 稍后,当您将size值更改为5时,它对x数组的大小没有影响,因为它已经初始化了。
  4. 在这种情况下,您有两种选择:

    • 声明时将size设为5:static int size = 5

    • 仅在致电x[]后初始化setSize()

      static int size;
      static int x[];
      
      public static void main(String[] args) {
          setSize(5);
          x = new int[size];
          ...
      }