2017-02-14 5 views

答えて

5

から降りて作業し、各ライン上のスペースを削除したいあなたの問題へのトリックは5つの文字が各行に印刷する必要があることを認識しています。各桁はそれが表す同じ回数だけ印刷され、残りは空白で埋められます。

for (int i=1; i <= 5; i++) { 
    // print 5 minus i spaces 
    for (int j=5; j >= i + 1; j--) { 
     System.out.print(" "); 
    } 
    // repeat the ith digit i times 
    for (int k=0; k < i; ++k) { 
     System.out.print(i); 
    } 
    System.out.print("\n"); 
} 

出力:

1 
    22 
    333 
4444 
55555 

しかし、あなたはコードの少ない行をしたい場合は、あなたもこれに、これをさらに簡素化することができることに注意してください:

for (int i=1; i <= 5; ++i) { 
    String line = new String(new char[5-i]).replace("\0", " ") + 
        new String(new char[i]).replace("\0", String.valueOf(i)); 
    System.out.println(line); 
} 
+0

ありがとうTim!ここで思考過程を説明するのを助けてください。私は別のループを追加しなかったとは思えません。スーパーはここに新しい。 –

+0

最初のループは '5 - i'スペースを左から右に出力し、2番目のループは同じライン上で数字i、i回を左から右に出力します。それでおしまい。 –

+0

ありがとうTim! –

0

はこの

をお試しください
for (int line = 1; line <= 5; line++) { 
     for (int space = 5; space >= line + 1; space--) { 
      System.out.print(" "); 
     } 
     for (int k = 0; k < line ; k++) { 
      System.out.print(line); 
     } 
     System.out.println(""); 
    } 
+0

printlnに空の文字列を渡す必要はありません –

+0

はい、空の文字列を使わずに行えます。 –

+0

@PaulPearsonなぜこれを受け入れられた回答として選択しましたか? –

関連する問題