错误消息线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:

时间:2012-11-08 20:01:55

标签: java exception error-handling

我有这个代码,但我一直收到此错误消息,我不知道为什么?

  

线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:2     在   javaapplication28.JavaApplication28.main(JavaApplication28.java:38)1   2 Java结果:1

public static void main(String[] args) {   

    Scanner input = new Scanner(System.in);
        System.out.println("This program transposes a matrix.");
        System.out.println("Please enter the number of rows");
        int rows = input.nextInt();
        System.out.println("User enters: "+rows);
        System.out.println("Please enter the number of columns");
        int columns = input.nextInt();
        System.out.println("User enters: "+columns);
        int [][]matrix=new int[rows][columns];
        for(int i=0;i<matrix.length;i++){
            for(int j=0;j<matrix[i].length;j++){
             System.out.print("Enter value for row [" +i+ "] column [" +j+"]:");
                matrix[i][j]=input.nextInt();  
            }
        }
        for(int i=0;i<=matrix.length;i++){
             System.out.println();
             for(int j=0;j<=matrix.length;j++){
                 System.out.print(matrix[i][j]+"  ");           
             }
         }
        System.out.println("The transpose of this matrix has" +columns+"rows and"+rows+"columns and the transpose is:");
        for(int i=0;i<=matrix.length;i++){
             System.out.println();
             for(int j=0;j<=matrix.length;j++){
                 System.out.print(matrix[j][i]+"  ");
    }
}}
}

2 个答案:

答案 0 :(得分:3)

从0到长度+ 1 i<=matrix.length循环运行。从=语句中删除for,在内部循环中添加:matrix[i].length而不是matrix.length以获取列数,而不是行。

这是有效的代码:

for(int i=0;i<matrix.length;i++){
        System.out.println();
        for(int j=0;j<matrix[i].length;j++){
            System.out.print(matrix[i][j]+"  ");           
        }
    }
    System.out.println("The transpose of this matrix has" +columns+"rows and"+rows+"columns and the transpose is:");
    for(int i=0;i<matrix.length;i++){
        System.out.println();
        for(int j=0;j<matrix[i].length;j++){
            System.out.print(matrix[j][i]+"  ");
        }
    }}

答案 1 :(得分:0)

如果你将for循环索引迭代器设置为0,那么当它是数组的长度时你应该使用<而不是<=,否则就好像你是试图获取(size n)数组的第(n + 1)个元素导致ArrayIndexOutOfBoundsException异常的原因