0

这是一个打印三角形的java代码,将它们命名为A、B、C、D;我的问题是如何在*同一级别上打印它们*

public class ex_5_10 {
public static void main(String args[]){
    // (A)
    System.out.println("(A)") ;

    for(int row = 0 ; row < 10 ; row++){
        for(int column = 0 ; column < 10 ; column++){
            if(column > row) continue ;
            System.out.print("*");
        }
        System.out.println() ;
    }
    //*********************************
    // (B)
    System.out.println("(B)") ;

    for(int row = 0 ; row < 10 ; row++){
        for(int column = 0 ; column < 10 ; column++){
            if(column < row) continue ;
            System.out.print("*");
        }
        System.out.println() ;
    }
    //********************************
    //(C)
    System.out.println("(C)") ;
    for(int row = 0 ; row < 10 ; row++){
        for(int column = 0 ; column < 10 ; column++){
            if( column < row ) System.out.print(" ") ;
            else System.out.print("*");
        }
        System.out.println() ;
    }
    // (D)
    System.out.println("(D)") ;
    for(int row = 0 ; row < 10 ; row++){
        for(int column = 10 ; column >= 0 ; column--){
            if( column > row ){ System.out.print(" ") ; }
            else {System.out.print("*"); }
        }
        System.out.println() ;
    }


}

}

所以上面的java代码会打印这个:

*
**
***

***
**
*

***
 **
  *

  *
 **
***

现在我需要在同一级别上打印相同的数字!

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

请帮我!我正在寻找你的答案!提前致谢

4

10 回答 10

5

你为什么不想这样打印?

System.out.println("*    *** ***   *") ;
System.out.println("**   **   **  **") ;
System.out.println("***  *     * ***") ;

更新:好的。

如果这是循环的作业。只需创建矩阵(数组数组)并通过分配的矩阵元素打印。

然后逐行打印出矩阵。

您应该为每个打印周期使用偏移量。Fox 示例,伪代码中的第二个(不是 java 代码!):

//*********************************
// (B)
matrix[0][offset] = "B";

for(int row = 0 ; row < height ; row++){
    for(int column = 0 ; column < width ; column++){
        if(column < row) continue ;
        matrix[row][column+offset] = "*";
    }
}
offset += width + space_length;
于 2012-05-11T10:34:14.723 回答
3

你也可以尝试这样的事情:

for(int row = 0 ; row < 10 ; row++){    

    // A
    for(int column = 0 ; column < 10 ; column++){
        if(column > row) continue ;
        System.out.print("*");
    }
    System.out.print("   ");

    // B
    for(int column = 0 ; column < 10 ; column++){
        if(column < row) continue ;
        System.out.print("*");
    }
    System.out.print("   ");


    // C
    for(int column = 0 ; column < 10 ; column++){
        if( column < row ) System.out.print(" ") ;
        else System.out.print("*");
    }
    System.out.print("   ");

    //D
    for(int column = 0 ; column < 10 ; column++){
        if(column > row) continue ;
        System.out.print("*");
    }

    System.out.println() ;
}

也许您可以通过将 4 个内部循环更改为一个循环来进一步简化它。但这是你的功课...

于 2012-05-11T11:07:03.500 回答
2
enter code hereclass y{
        public static void main(String args[])
        {
            for(int x=1;x<=3;x++)
            {
                for(int y=1;y<=x;y++)
                {
                    System.out.print("*");
                }
                for(int sp1=1;sp1<=(4-x);sp1++)
                {
                    System.out.print(" ");
                }
                for(int se=1;se<=(4-x);se++)
                {
                    System.out.print("*");
                }
                for(int sp2=1;sp2<(2*x);sp2++)
                {
                System.out.print(" ");
                }
                for(int p=1;p<x;p++)
                {
                System.out.print(" ");

                }
                for(int stt=1;stt<=(4-x);stt++)
                {
                System.out.print("*");
                }
                for(int spth=1;spth<=(4-x);spth++)
                {
                System.out.print(" ");
                }
                for(int stfr=1;stfr<=x;stfr++)
                {
                System.out.print("*");
                }
                System.out.print("\n");
            }

        }

    }
于 2014-06-09T14:24:40.047 回答
2

对此没有单行答案。

您需要记住,当您调用 时println(),字符串末尾将有一个换行符输出,因此该行不会再出现任何内容。

考虑到这一点,您需要拆分逻辑,以便首先组装各种“图形”的输出,然后在处理完它们后,以有意义的方式输出结果(所以每个字符的第一行,然后是第二行等)。不要在处理每个图形时调用 print,而是将结果放入适当的数据结构中。

对于奖励分数,当提供足够的数据以跨越显示的宽度时,您需要自动换行......

于 2012-05-11T10:34:06.407 回答
1

如果您想使用结果,您可以执行以下操作:(这是一个家庭作业)

您会注意到,在循环中存在以下条件:

  1. if(column < row) continue ; System.out.print("*");
  2. if(column < row) continue ; System.out.print("*");
  3. if( column < row ) System.out.print(" ") ; else System.out.print("*");

  4. if( column > row ){ System.out.print(" ") ; } else {System.out.print("*"); }

只需混合并重新排列它们,然后查看结果。并且还移动行的一个循环内部的列的循环内部,并为列添加偏移量。
这次你需要使用一个循环块而不是 4 个。

玩得开心。

于 2012-05-11T10:41:13.417 回答
0
public class ex_5_10 {
public static void main(String args[]){
    // (A)
    System.out.println("(A)") ;

    for(int row = 0 ; row < 10 ; row++){
        for(int column = 0 ; column < 10 ; column++){
            if(column > row) continue ;
            System.out.print("*");
        }
        System.out.print() ;
    }
   //*********************************
   // (B)
   System.out.println("(B)") ;

   for(int row = 0 ; row < 10 ; row++){
      for(int column = 0 ; column < 10 ; column++){
         if(column < row) continue ;
         System.out.print("*");
      }
      System.out.print() ;
   }
   //********************************
   //(C)
   System.out.println("(C)") ;
   for(int row = 0 ; row < 10 ; row++){
      for(int column = 0 ; column < 10 ; column++){
          if( column < row ) System.out.print(" ") ;
          else System.out.print("*");
      }
      System.out.print() ;
   }
   // (D)
   System.out.println("(D)") ;
   for(int row = 0 ; row < 10 ; row++){
       for(int column = 10 ; column >= 0 ; column--){
         if( column > row ){ System.out.print(" ") ; }
         else {System.out.print("*"); }
       }
       System.out.print() ;
   }


  }
于 2012-06-07T08:41:55.677 回答
0

您可以将所有不同图形的代码放在同一个循环中,然后在每个图形之间放置计算的空格。找出图形之间的空间模式。

于 2012-05-11T10:35:44.730 回答
0

您将在行的一个循环内移动列的内部 for 循环,并为列添加偏移量。内部 if 的逻辑将全部是列 - 偏移量。

于 2012-05-11T10:35:52.547 回答
0

代码

public class Main {

    public static void main(String[] args) {

    for(int line = 1 ; line<=3; line++){
        for(int patternOne=1; patternOne<=line; patternOne++ ){
            System.out.print("*");
        }

        for(int space=3; space>=line; space--){
            System.out.print(" ");
        }

        for(int patternTwo=3; patternTwo>=line; patternTwo--){
            System.out.print("*");
        }

        for(int space=1; space<=(line*2)-1; space++){
            System.out.print(" ");
        }
        for(int patternThree=3; patternThree>=line; patternThree-- ){
            System.out.print("*");
        }
        for(int space=3; space>=line; space--){
            System.out.print(" ");

        }
        for(int patternFour=1; patternFour<=line; patternFour++){
            System.out.print("*");
        }


        System.out.println();
    }


    }
}

输出

*    *** ***   *   
**   **   **  **
***  *     * ***
于 2020-07-21T04:43:26.920 回答
-1

整数行 = 10;

    for(int i=0; i<rows ; i++)
    {
        for (int j = 0; j <i; j++) {
            System.out.print("*");
        }
        System.out.println();
    }
于 2015-06-01T07:14:16.783 回答