【问题标题】:Scanner Two-dimensional array (n x n)扫描仪二维数组 (n x n)
【发布时间】:2018-10-10 14:23:20
【问题描述】:
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 < 0; j++)
            if (i == j)
                num[i][j] = 1;
            else
                num[i][j] = 0;

    for (int[] a : num) {
        for (int b : a)
            System.out.print(b + " ");
        System.out.println();
    }
}

}

我想做 1 0 0 0 1 0 0 0 1 但我的回答就像 0 0 0 0 0 0 0 0 0

【问题讨论】:

  • for (int j = 0; j &lt; 0; j++) - j
  • 对您的代码的注释:即使在可能的情况下,您也不应该省略围绕ifelsefor、...的括号,这会在您编辑/时引入讨厌的错误/稍后扩展您的代码。
  • 另外,你想要的 (100010001) 看起来不像 2 dim 数组。您的代码将在对角线条目处生成一个 1 的矩阵

标签: java arrays for-loop java.util.scanner


【解决方案1】:

看起来您的代码正在退出内部循环,即使用j 作为变量的代码。你初始化j = 0,然后如果 j for (int j = 0; j < n; j++) 我希望你会得到你想要的结果。

【讨论】:

  • 谢谢我没有看到我以为我把它放在了 n 而不是 0 zzzzzzzzz
【解决方案2】:

您需要遍历二维数组中的所有元素,而不仅仅是第 0 个元素。请参阅修改后的 for 循环。

import java.util.Scanner;
public 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++)
            if (i == j)
                num[i][j] = 1;
            else
                num[i][j] = 0;

    for (int[] a : num) {
        for (int b : a)
            System.out.print(b + " ");
        System.out.println();
    }
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多