请高手指点之JAVA_二维数组相加问题

alwin_java 2007-11-28 12:21:37
//我从键盘输入两个数组,然后相加付给第三个数组并打印,可是空指针异常!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]);
}
}

}

}
...全文
279 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
alwin_java 2007-11-28
  • 打赏
  • 举报
回复
我改过了,还是不行啊,谢谢你了!
seaforce 2007-11-28
  • 打赏
  • 举报
回复
for (int i = 0; i < a.length; i++) {
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++) {
mengzulin 2007-11-28
  • 打赏
  • 举报
回复
i等于j吗?
二维数组要区分第维和第二维。
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a[i].length-1; j++) {
Maojm 2007-11-28
  • 打赏
  • 举报
回复
int sum[][] = null;
这句有问题,因为你还没有分配空间,下面就不能用它
sum[i][j] = a[i][j] + b[i][j]; //这里会出错。

你可以把三个数组的维数大小,设成类成员。然后在构造函数或其他方法里初始话数组维数的大小。
「已注销」 2007-11-28
  • 打赏
  • 举报
回复
int sum[][] = null;
你这个数组没有分配内存,当然会空指针异常了。给它分配内存就行了。
  • 打赏
  • 举报
回复
sun没有初始化,还有一些其他的问题,更改后的add方法:

public void add(int[][] a, int[][] b) { 
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]);
}
}
}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧