不应';的数组的Java ArrayIndexOutOfBounds错误;不要越界
我最近一直在编写一段Java代码,似乎我被卡住了 这是我的密码:不应';的数组的Java ArrayIndexOutOfBounds错误;不要越界,java,arrays,Java,Arrays,我最近一直在编写一段Java代码,似乎我被卡住了 这是我的密码: public class Test { static private int arraySize; public Test(int arrayS){ arraySize = arrayS; } int []ma = new int[arraySize]; public static void main(String[] args){ } public void increment()
public class Test {
static private int arraySize;
public Test(int arrayS){
arraySize = arrayS;
}
int []ma = new int[arraySize];
public static void main(String[] args){
}
public void increment(){
int count = arraySize - 1;
ma[count - 1] += 1;
while(count!= 0){
if(ma[count] > 9){
ma[count] =0;
ma[count - 1] +=1;
}
count -=1;
}
if(ma[0] > 9){
ma[0] = 0;
}
}
}
class Trial
{
public static void main(String[] args)
{
Test z = new Test(2);
System.out.println(z);
z.increment();
System.out.println(z);
}
}
特别是这一行:ma[count-1]+=1代码>
无论什么时候审判因为某种原因试图建立它,它总是越界。我不断地发现这个错误:
线程“main”java.lang.ArrayIndexOutOfBoundsException中出现异常:0
我真的很感激你能提供的任何帮助,因为我似乎找不到任何理由来解释为什么数组会越界。谢谢。首先,测试类中没有任何参数化构造函数。如何使用newtest创建对象(2)代码>
其次,全局初始化int[]ma=newint[arraySize]代码>
这一次数组化的值为零
Putma=newint[arraySize]在构造函数中设置arraySize
byarrayS
value的值后,由于arraySize是一个静态实例变量,因此当程序启动时,它将初始化为0,因此ma的大小为0
这就是为什么访问ma[0]时会出现错误
要解决它,您需要在构造函数中初始化ma
static private int arraySize;
public Test(int arrayS){
arraySize = arrayS;
ma = new int[arrayS];
}
int []ma;
您可以初始化arraySize和ma inline。因此,arraySize使用0(非NULL)初始化,然后您的数组使用0的容量初始化。你应该在构造函数中初始化你的数组。在这里发布你的代码有很多缺少的代码。。。请输入完整的代码,以便我们尝试理解,例如,您的测试构造函数丢失了在构造函数中分配数组。我认为这个问题的发生是由于大小是静态的,并且之前已经初始化。这几乎导致数组被初始化为大小为0抱歉,在这里写入时出现了一点错误,构造函数现在应该在那里了。