扫描仪阵列(n x n)

时间:2018-04-30 14:53:05

标签: java arrays java.util.scanner

我的代码:

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++) {
        for (int j = 0; j < n; j++)
            System.out.print(num[i][j] + " ");
        System.out.println();
    }
}

答案出来了

0 0 0 
0 0 0 
0 0 0

但我想制作

1 0 0
0 1 0 
0 0 1

1 个答案:

答案 0 :(得分:1)

正如doc of Java中的解释,int初始化为值0.所以当你只声明你的数组没有设置特定值时,它只包含0.这就是你输出的原因

0 0 0
0 0 0
0 0 0

您需要先初始化数组,将值1放在所需的位置。在您的情况下,您想要创建一个单位矩阵,因此将1放在行和列具有相同索引的位置(在对角线中)。这应该是这样的:

for (int i = 0; i < n; i++)
    num[i][i] = 1;

在打印数组之前放置此初始化,因此完整代码将如下所示:

Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int[][] num = new int[n][n];
for (int i = 0; i < n; i++)
    num[i][i] = 1;
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++)
        System.out.print(num[i][j] + " ");
    System.out.println();

}