嵌套循环以阵列样式打印

时间:2015-11-09 17:45:58

标签: java for-loop

我正在尝试学习嵌套For Loops,并且我希望它用*打印出长度和宽度的显示。在宽度= 3和长度= 4的情况下,所需的输出应该看起来像是由*组成的3x4盒子。

我的For Loop是否正确嵌套?在宽度值大于长度的情况下,我是否需要两个For循环?

int width, length, i, j;

                width = 3;
                length = 4;

                //Print the output
                System.out.print("Here are the stars: ");
                System.out.print("\n");
                for(i=0; i<width; i++) {
                    System.out.print("*");
                    for(j=0; j<length; j++) {
                        System.out.println("*");
                    }
                }
            }
       }

7 个答案:

答案 0 :(得分:2)

您无法在第一个循环中打印星标。这是错的:

for(i=0; i<width; i++) {
                System.out.print("*");

这是一个更正:

int width, length, i, t;

    width = 3;
    length = 4;

    //Print the output
    System.out.print("Here are the stars: ");
    System.out.print("\n");
    for (i = 0; i < width; i++) {
        for (t = 0; t < length; t++) {
            System.out.print("*");
        }
        System.out.println();
    }

答案 1 :(得分:2)

基本上这里发生的是它正在逐行打印星星。我切换了宽度和长度,因为它应该到每一行并逐行打印出星星。

int width, length;

    width = 3;
    length = 4;

    //Print the output
    System.out.print("Here are the stars: ");
    System.out.print("\n");
    for (int i = 0; i < length; i++) {
        for (int j = 0; j < width; j++) {
            System.out.print("*");
        }
        System.out.println();
    }

答案 2 :(得分:2)

这是我的尝试,因为我看到每个人都在切换宽度和长度?我认为长度意味着身高。

int width = 3;
int length = 4;

System.out.println("Here are the stars: ");

for(int i = 0; i < length; i++) {
    for(int j = 0; j < width; j++) {
        System.out.print("*");
    }
    System.out.println();
}

输出

Here are the stars: 
***
***
***
***

答案 3 :(得分:1)

原始代码

for(i=0; i<width; i++) {
    System.out.print("*");
    for(j=0; j<length; j++) {
        System.out.println("*");
    }
}

可生产

**
*
*
*
**
*
*
*
**
*
*
*

因为您在内部循环中的每个“”之后添加换行符。将println移动到内循环之后。你需要做的所有外循环都是控制内循环执行的次数并打印换行符。 此外,您在内循环之前打印''是错误的。

这是你需要的

    // Print the output
    System.out.println("Here are the stars:");
    for (i = 0; i < width; i++) {
        for (j = 0; j < length; j++) {
            System.out.print("*");
        }
        System.out.println();
    }

此解决方案在一行(内循环)中打印length个星号,后跟换行符。这样做width次。

答案 4 :(得分:0)

一旦你掌握了正确的逻辑,你还需要考虑性能。输出到资源有成本。我会拆分数组并最小化写入System.out。

StringBuffer sb = new StringBuffer(); 
for (int w = 0; w < width; w++) {   
    sb.append('*'); 
}

final String s = sb.toString(); 
for (int h = 0; h < height; h++) { 
    System.out.println(s); 
}

答案 5 :(得分:-1)

指定3x4星形图案,通常表示3行4列。但显然你想要4行3列。也就是说,长度是行数(3)和宽度(4)列数

for(int row = 0; row < length; row++) {
    for(int col = 0; col < width; col++) {
        System.out.print("*");
    }
    System.out.println();
}

作为旁注,没有理由,在for循环之外声明ij实际上是不好的风格。在上面的代码段中,我在相应的for循环中声明了rowcol变量。

答案 6 :(得分:-1)

您需要做两次小修改。将内部循环println更改为打印,然后在内部循环后添加println,如下所示:

    int width, length, i, j;

    width = 3;
    length = 4;

    //Print the output
    System.out.print("Here are the stars: ");
    System.out.print("\n");
    for(i=0; i<length; i++) {
        System.out.print("*");
        for(j=0; j<width; j++) {
            System.out.print("*");
        }
        System.out.println("");
    }

另外......您需要更改宽度= 2和长度= 3或者以1开始循环。当前实现打印4-5矩阵。