繁体   English   中英

java 2D integer 数组循环错误 output

[英]java 2D integer array looping wrong output

代码:

class test1 {
    public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            int a = scan.nextInt(); // input number rows & colums
            int twoD[][] = new int[a][];
            int z;
            for (z = 0 ; z < a ; z++) {
                    twoD[z] = new int[z + 1];
            }
            int i,j,k = 0;
            for (i = 0 ; i < a ; i++) {
                    for (j = 0 ; j <= i ; j++){
                            twoD[i][j] = k;
                            k++;
                    }
            for (i = 0 ; i < a ; i++ ) {
                    for (j = 0 ; j <= i ; j++){
                            System.out.print(twoD[i][j] + " ");
                    }
                    System.out.println();
            }
            }
    }

我预期的 output 是(对于 a = 4):

0 
1 2 
3 4 5 
6 7 8 9 

我的 output 是(对于 a = 4):

0 
0 0 
0 0 0 
0 0 0 0 

请帮我解决我的问题。 据我说,修剪是正确的。 其他地方可能有错误...

打印数组内容的循环包含在应该用值填充二维数组的循环中。 由于它使用相同的变量,因此会干扰第一个循环的执行。 将其移出:

        int i,j,k = 0;
        for (i = 0 ; i < a ; i++) {
                for (j = 0 ; j <= i ; j++){
                        twoD[i][j] = k;
                        k++;
                }
        }
        for (i = 0 ; i < a ; i++ ) {
                for (j = 0 ; j <= i ; j++){
                        System.out.print(twoD[i][j] + " ");
                }
                System.out.println();
        }

您可以通过以下方式避免这种情况

  • 使用和编辑器或 IDE 自动格式化您的代码,从而向您展示控制结构是如何嵌套的
  • 使用常见的习惯用法,例如用最小的必要 scope 声明循环变量:
for (int i = 0 ; i < a ; i++)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM