我有这个代码,但我一直收到此错误消息,我不知道为什么?
线程“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]+" ");
}
}}
}
答案 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
异常的原因