如何修复ArrayIndexOutOfBoundsException:0?

时间:2016-11-29 12:55:50

标签: java indexoutofboundsexception

我需要在生成矩阵期间使用动态数据结构,但最终矩阵显示为列表,这看起来非常不舒服。 这就是我决定添加2D数组的原因。 但是当我启动它时,我得到一个ArrayIndexOutOfBoundsException:0错误。尝试了一切,但它仍然无法正常工作。有什么想法可以纠正吗?

List<Integer> J = null;
static int ord;
static int ord1;
static int notZero;
static int val=0;
public static int[][] array;


public Matrix(){
    int numberCol;
    A=new LinkedList<ElementStructure>();
    x=new LinkedList<ElementStructure>();
    b=new LinkedList<ElementStructure>();
    J = new LinkedList<Integer>();
    array = new int[ord][ord];
    Random rand= new Random();
    System.out.print("Enter matrix order ");
    Scanner scn = new Scanner(System.in);
    ord = scn.nextInt();
    ord1=ord/2;
    for (int i=0; i<ord;i++){
        for( int j=0; j<ord; j++){
            if(j==ord-i-1){
                J.add(j);
                int q = rand.nextInt(201)-100;
                A.add(new ElementStructure(i,j,q));
                array[i][j] = q;
                val++;
                break;
            }   else if(ord<20){notZero=ord/2;}
            else { notZero=rand.nextInt(ord);}
            for(int k=0; k<notZero; k++){
                numberCol=rand.nextInt(ord);
                if(J.contains(numberCol)){continue;}
                    J.add(numberCol);
                    int q = rand.nextInt(201)-100;
                    A.add(new ElementStructure(i,numberCol, q));
                    array[i][numberCol] = q;
                    val++;
            }
            break;
        }
}

}
public static void main(String[] args) throws IOException {
    Matrix Matrix = new Matrix();
    for (int c=0; c<Matrix.val; c++){
        System.out.println(Matrix.A.get(c).toString());
    }
    for (int i = 0;i < ord;i++){
        for (int j = 0;j < ord;j++){
            System.out.print(array[i][j] + " ");
        }
    System.out.println();    
    }
}

1 个答案:

答案 0 :(得分:0)

在为ord分配值之后应该声明下一行,因为你用ord初始化数组为0,这就是数组长度为0的原因,并引发了ArrayIndexOutOfBoundsException。

array = new int[ord][ord];