如何在同一条水平线上显示不同的图案?

时间:2018-09-26 17:51:17

标签: java

我在Java中设计了不同的图案,然后我希望它们全部打印在一条水平线上。我的程序以垂直线显示输出。这是我的代码:

package demo;

public class PatternDemo {

  public static void main( String[] args ) throws InterruptedException {

    int n = 5;

    for ( int i = 0; i < n; i++ ) {
      for ( int j = 0; j < n; j++ ) {
        if ( i == 0 || j == 0 || i == n / 2 || (i <= n / 2 && j == n - 1)
            || i == n - 2 && j == n - 3 || i == n - 1 && j == n - 1 ) {
          System.out.print( "* " );
        } else {
          System.out.print( "  " );
        }

      }
      System.out.println( );

    }

    for ( int i = 0; i < n; i++ ) {
      for ( int j = 0; j < n; j++ ) {

        if ( i == 0 || j == 0 || j == n - 1 || i == n / 2 ) {
          System.out.print( "* " );
        } else {
          System.out.print( "  " );
        }
      }
      System.out.println( );
    }
  }
}

3 个答案:

答案 0 :(得分:1)

System.out.println()将移动到下一行,移动后将无法返回到上一行。您必须更改整个逻辑以获取所需的模式

    int n= 5;
    for ( int i = 0; i <n; i++) {
        for ( int j = 0; j <n; j++) {
            if(i==0||j==0||i==n/2||(i<=n/2&&j==n-1)||i==n-2&&j==n-3||i==n-1&&j==n-1) {
                System.out.print("* ");
            } else {
                System.out.print("  ");
            }
        }
        for (int j = 0; j < n; j++) {

            if(i==0||j==0||j==n-1||i==n/2){
                System.out.print("* ");
            }else {
                System.out.print("  ");
            }

        }
        System.out.println();
    }

输出:

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

答案 1 :(得分:0)

System.out.print()将输出立即置于另一个位置,并且它们之间没有换行符。这就是为什么某些部分出现在同一行中的原因。如果要垂直打印,请使用System.out.println(),这样可使下一行打印到下一行。

答案 2 :(得分:0)

代码中的System.out.println()语句将始终打印一行。也许删除它们可以解决您的问题。