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
数组的大小没有影响,因为它已经初始化- 声明时将
设置为5:size
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];
...
}