Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.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,我试图在方法中声明实例数组的数组大小。有什么办法吗?多谢各位 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] =

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

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;

}

}
PackageJavaApplication2;
公共类JavaApplication2{
静态整数大小;
静态整数x[]=新整数[大小];
公共静态void main(字符串[]args){
设置大小(5);
对于(int i=0;i<5;i++){
x[i]=i;
}
}
静态无效设置大小(int i){
尺寸=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];

}

}
PackageJavaApplication2;
公共类JavaApplication2{
静态int x[];
公共静态void main(字符串[]args){
设置大小(5);
对于(int i=0;i<5;i++){
x[i]=i;
}
}
静态无效设置大小(int i){
x=新整数[i];
}
}
我得到了这个错误。线程“main”java.lang.ArrayIndexOutOfBoundsException中出现异常:0 位于javaapplication2.javaapplication2.main(javaapplication2.java:13)
Java结果:1

同样在
setSize()
方法中初始化数组,并从声明位置移除初始值设定项

static int size;
static int[] x;

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

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


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

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

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

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

    • 仅在调用
      setSize()
      后初始化
      x[]


    也许
    静态无效设置大小(inti){size=i;x[]=newint[size];}
    为什么更改代码?现在你的问题没有意义了。在Java中,数组大小不是“声明的”。它们是在运行时创建数组时动态设置的。更新后的代码不会抛出ArrayIndexOutOfBounds。您已经在其他地方发布了该问题。@Ski copy将您的代码粘贴到一个新的类中,它毫无例外地成功执行。顺便说一句,Java结果:1来自哪里?当然是声明的。甚至初始化为它的默认值
    0
    。我更改了上面的代码。它仍然没有初始化大小。
    size
    变量有什么好处,为什么不直接调用
    x.length
    ?@Ski给定的更改会遇到什么问题?或者根本没有。我取出了代码,但有人把代码改成了以前的样子。@Rohit Jain ArrayOutOfBound error。我假设,因为数组大小仍然为0。
    static int size;
    static int x[];
    
    public static void main(String[] args) {
        setSize(5);
        x = new int[size];
        ...
    }