Java二维数组生成单位矩阵异常:输出全0而非目标矩阵
问题排查与修复方案
嘿,这问题一眼就能看出来啦!你的代码里有个循环条件的低级错误,直接导致填充单位矩阵的逻辑完全没执行起来~
核心问题分析
你看这段内层循环代码:
for (int j = 0; j < 0; j++)
j的初始值是0,而循环条件是j < 0——这个条件从一开始就不成立,所以这个内层循环一次都不会运行。而Java中int类型的二维数组初始化时,所有元素默认值都是0,最后输出自然是全0矩阵。
修复后的代码
只需要把内层循环的条件改成j < n,让它能遍历每一列就行。另外else num[i][j] = 0;其实可以省略,因为数组默认已经是0了,不过保留也不影响:
import java.util.Scanner; class Test1 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int[][] num = new int[n][n]; for (int i = 0; i < n; i++) // 把j < 0改成j < n,让循环正常执行 for (int j = 0; j < n; j++) if (i == j) num[i][j] = 1; // 可选:数组默认值为0,这行可删除 else num[i][j] = 0; for (int[] a : num) { for (int b : a) System.out.print(b + " "); System.out.println(); } } }
验证效果
当输入3时,这段代码会输出:
1 0 0 0 1 0 0 0 1
完全符合你想要的单位矩阵效果~
内容的提问来源于stack exchange,提问作者Hellmud
相关产品推荐
相关产品推荐

