2017-06-28 6 views
-4

だから私は、n 入力の値を受け入れることによって、次のパターンを印刷する必要があります。*パターンを印刷

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

コード:

public static void printPattern(int n) 
{ 
    for(int i=1;i<=n;i++) 
    { 
     for(int j=1;j<=i;j++) 
     { 
      System.out.println("*"); 
     } 
     System.out.println("\n"); 
    } 
    for (int a = n-1; a >= 1; a--) 
    { 
     for (int b = 1; b <= a; b++) 
     { 
      System.out.print("*"); 
     } 
     System.out.println("\n"); 
    } 
} 

しかし、7 出力はこれをしなければなら何らかの理由でこのパターンが印刷されます(例:n = 8)。

* 


* 
* 
* 
* 
* 


* 
* 
* 
* 
* 
* 


* 
* 
* 
* 
* 
* 
* 


* 
* 
* 
* 
* 
* 
* 
* 


******* 

****** 

***** 

**** 

*** 

** 

* 

エラーとはここに?

+0

あなたは '使用の代わりに、' System.out.println'を使用していますSystem.out.print'を実行すると、各印刷後に改行をスキップします。 –

答えて

2

最初のforループでSystem.out.printlnの代わりにSystem.out.printを使用します。後者の場合は、手動で行おうとしている最後に改行文字が常に追加されます。

また、内部ループの繰り返しの後に改行を追加するにはSystem.out.print("\n");またはSystem.out.println("");を入力します。

0

ループの最初は

for (int i = 1; i <= n; i++) { 
      for (int j = 1; j <= i; j++) { 
       System.out.print("*"); 

      } 
      System.out.print("\n"); 

     } 

System.out.println(); 

は、常に我々がSystem.out.println("\n");を使用する場合、これは2線で

+0

いいえ、しないでくださいSystem.out.println( "\ n");それは2行をスキップします – azro

+0

はい私は答えを編集しました – ThilinaMD

0
for (int i = 1; i <= n; i++) { 
    for (int j = 1; j <= i; j++) { 
     System.out.print("*"); 
    } 
    System.out.println(); 
} 
for (int a = n - 1; a >= 1; a--) { 
    for (int b = 1; b <= a; b++) { 
     System.out.print("*"); 
    } 
    System.out.println(); 
} 

にカーソルを移動しますあなたのコードに新しい行 にカーソルを移動し、このようにする必要がありますprintlnprintに変更すると、それぞれ*の後に別の行に移動せず、\nを削除して2行をスキップしないようにします。lnすでにあります

1

System.out.printlnは最後に改行が追加されています。したがって、System.out.println("\n")は2つの改行を追加します。

コードを1つのdouble-forループに集約することができます。以下のルーチンは、単一の行に「*」の最大数を定義する単一のパラメータを受け付けます

/** 
* @param width 
*   the maximum width of the pattern. 
*/ 
public static void print(int width) { 
    for (int i = 1; i < 2 * width; ++i) { 
     for (int j = 0; j < width - Math.abs(width - i); ++j) 
      System.out.print("*"); 
     System.out.println(); 
    } 
} 

public static void main(String[] args) { 
    print(4); 
} 

出力:

* 
** 
*** 
**** 
*** 
** 
* 
関連する問題