Java中的嵌套循环,输出

时间:2017-05-15 04:10:17

标签: java nested-loops ascii-art

我的代码问题需要帮助。我必须编写一个以表格格式显示星型的程序。

我并不是在寻找确切的代码,我想自己弄清楚,所以任何建议和提示都会有很大的帮助。

Picture of Table

// Pattern A Loop
for(int PatternA = 0; PatternA <= 9; PatternA++) { // outerLoop Pattern A
    for(int PatternAI = 0; PatternAI <=PatternA;PatternAI++) { // Inner Loop
        System.out.print("+");
    }
    System.out.println();
}

// Pattern B Loop
for(int PatternB = 0; PatternB <=10; PatternB++) { // outer loop Pattern B
    for(int PatternBI = 9; PatternBI >= PatternB; PatternBI--) { //Inner Loop
        System.out.print("+");
    }
    System.out.println();
}

2 个答案:

答案 0 :(得分:0)

既然你说你不想要一个完整的解决方案,这里有一些提示。

首先,由于您的表必须在同一行上打印来自PatternAIPatternBI的材料,因此您应该将这些循环移动到一起。这将涉及使外部循环适用于两者。 (提示:您可以在for循环中使用多个变量:for(int i = 0, j = 0; i < 10 && j < 2; i++, j++) 1

您还需要一些方法来分离模式。您可以使用空格,但它们的数量会有所不同(实际上与+的方式相同,因此您可以使用它)。标签也有效,而且更简单。但是,当线条达到一定长度时,您必须在使用的标签数量之间进行更改。

这就是它的全部内容。如果我的提示有用,或者是否有更好的方式来表达它们,请告诉我。

1 这里实际上并不需要。 (见下面的最终代码)

这是完整的代码,如果你卡住=)

  


//Note, Pattern is used for both PatternA and PatternB in this outer loop for(int Pattern = 0; Pattern <= 9; Pattern++) { //Outer Loop for(int PatternAI = 0; PatternAI <=Pattern;PatternAI++){ //Inner Loop PatternA System.out.print("+"); } if(Pattern < 7) System.out.print("\t\t"); else System.out.print("\t"); for(int PatternBI = 9; PatternBI >= Pattern; PatternBI--){ //Inner Loop PatternB System.out.print("+"); } System.out.println(); }

答案 1 :(得分:0)

外环穿过图案的线条,内环穿过这些线条的元素。要将多行合二为一,您必须在一个外循环中组合多个内循环。

Try it online!

例如,采用以下模式:

four patterns

一个外循环中的多个内循环:

int n = 5;
for (int i = -n; i <= n; i++) {
    System.out.print(i == -n ? "a) " : "   ");
    for (int j = -n; j <= n; j++) {
        if (i + j <= 0)
            System.out.print("*");
        else
            System.out.print("-");
    }
    System.out.print(i == -n ? "  b) " : "     ");
    for (int j = -n; j <= n; j++) {
        if (i + j >= 0)
            System.out.print("*");
        else
            System.out.print("-");
    }
    System.out.print(i == -n ? "  c) " : "     ");
    for (int j = -n; j <= n; j++) {
        if (i <= j)
            System.out.print("*");
        else
            System.out.print("-");
    }
    System.out.print(i == -n ? "  d) " : "     ");
    for (int j = -n; j <= n; j++) {
        if (Math.abs(i) + Math.abs(j) <= n)
            System.out.print("*");
        else
            System.out.print("-");
    }
    System.out.println();
}

输出:

a) ***********  b) ----------*  c) ***********  d) -----*-----
   **********-     ---------**     -**********     ----***----
   *********--     --------***     --*********     ---*****---
   ********---     -------****     ---********     --*******--
   *******----     ------*****     ----*******     -*********-
   ******-----     -----******     -----******     ***********
   *****------     ----*******     ------*****     -*********-
   ****-------     ---********     -------****     --*******--
   ***--------     --*********     --------***     ---*****---
   **---------     -**********     ---------**     ----***----
   *----------     ***********     ----------*     -----*-----

另见:How to print ASCII patterns in C# but using Java syntax?