不应';的数组的Java ArrayIndexOutOfBounds错误;不要越界

不应';的数组的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()

我最近一直在编写一段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(){
    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]
这一次数组化的值为零


Put
ma=newint[arraySize]arraySize
by
arrayS
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抱歉,在这里写入时出现了一点错误,构造函数现在应该在那里了。