//我从键盘输入两个数组,然后相加付给第三个数组并打印,可是空指针异常!public class Matrix { public static void main(String[] args) {
new Matrix().fuzhi(); } public void fuzhi() {
Scanner s = new Scanner(System.in);
int i = s.nextInt();
int j = s.nextInt();
int a[][] = new int[i][j];
int b[][] = new int[i][j]; for (int k1 = 0; k1 < i; k1++) {
for (int k2 = 0; k2 < j; k2++) {
a[k1][k2] = s.nextInt();
}
} for (int k3 = 0; k3 < i; k3++) {
for (int k4 = 0; k4 < j; k4++) {
b[k3][k4] = s.nextInt();
}
} add(a, b);
} public void add(int a[][], int b[][]) {
int sum[][] = null;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length; j++) {
sum[i][j] = a[i][j] + b[i][j];
System.out.println(sum[i][j]);
}
} }}
new Matrix().fuzhi(); } public void fuzhi() {
Scanner s = new Scanner(System.in);
int i = s.nextInt();
int j = s.nextInt();
int a[][] = new int[i][j];
int b[][] = new int[i][j]; for (int k1 = 0; k1 < i; k1++) {
for (int k2 = 0; k2 < j; k2++) {
a[k1][k2] = s.nextInt();
}
} for (int k3 = 0; k3 < i; k3++) {
for (int k4 = 0; k4 < j; k4++) {
b[k3][k4] = s.nextInt();
}
} add(a, b);
} public void add(int a[][], int b[][]) {
int sum[][] = null;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length; j++) {
sum[i][j] = a[i][j] + b[i][j];
System.out.println(sum[i][j]);
}
} }}
for (int j = 0; j < a.length; j++) {
超出范围了,应该是:
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-1; j++) {
int[][] sum = new int[a.length][a[0].length];
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
sum[i][j] = a[i][j] + b[i][j];
System.out.println(i + " " + j + " " + sum[i][j]);
}
}
}
你这个数组没有分配内存,当然会空指针异常了。给它分配内存就行了。
这句有问题,因为你还没有分配空间,下面就不能用它
sum[i][j] = a[i][j] + b[i][j]; //这里会出错。你可以把三个数组的维数大小,设成类成员。然后在构造函数或其他方法里初始话数组维数的大小。
二维数组要区分第维和第二维。
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a[i].length-1; j++) {