由于某种原因,它没有编译。我是java的新手,我正在努力学习这个。我不知道这个程序有什么问题。任何人都可以至少指出我正确的方向吗?
沟通错误:
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:3
在Matrix.main(Matrix.java:17)
import java.util.Scanner;
public class Matrix {
public static void main(String[] args) {
Scanner data = new Scanner(System.in);
final int w=3,k=2;
int[][] x = { //Tworzy tablice 4x3 (3x2, bo a1=[0,0])
{1,12,3}, //x[0,0]=1 x[0,1]=12 x[0,2]= 3
{45,4,1,0}, //x[1,0]=45 x[1,1]=4 x[1,2]= 1 x[1,3]=0
{2,3} //x[2,0]=2 x[2,1]=3
};
int[][] matX = new int[w][k]; //tab[w,k]
for(int i=0 ; i<matX.length ; i++) {
for(int j=0 ; j<matX[w].length ; j++) {
matX[i][j] = data.nextInt();
}
}
for(int i=0 ; i<matX.length ; i++) {
for(int j=0 ; j<matX[w].length ; j++) {
System.out.println(matX[i][j]);
if(j==matX[w].length-1) {
System.out.println(System.lineSeparator());
}
}
}
data.close();
}
}
答案 0 :(得分:2)
您使用长度w
作为matX
的索引,j<matX[w].length
本身就是无效索引。变化
j<matX[i].length
为:
i
使用外部循环变量{{1}}。
答案 1 :(得分:0)
尝试在循环中使用matX[i]
而不是matX[w]
,这里有一些代码开头:
import java.util.Scanner;
public class Matrix { public static void main(String[] args) {
Scanner data = new Scanner(System.in);
final int w=3,k=2;
int[][] x = { //Tworzy tablice 4x3 (3x2, bo a1=[0,0])
{1,12,3}, //x[0,0]=1 x[0,1]=12 x[0,2]= 3
{45,4,1,0}, //x[1,0]=45 x[1,1]=4 x[1,2]= 1 x[1,3]=0
{2,3} //x[2,0]=2 x[2,1]=3
};
int[][] matX = new int[w][k]; //tab[w,k]
for(int i=0 ; i<matX.length ; i++) {
for(int j=0 ; j<matX[i].length ; j++) {
matX[i][j] = data.nextInt();
}
}
for(int i=0 ; i<matX.length ; i++) {
for(int j=0 ; j<matX[i].length ; j++) {
System.out.println(matX[i][j]);
if(j==matX[i].length-1) {
System.out.println(System.lineSeparator());
}
}
}
data.close();
}