この問題を解決する方法を理解できないようです。私は、番号を追加し、1ループスペースと数字のネストされたJava
for (int line = 1; line <= 5; line++) {
for (int space = 5; space >= line + 1; space--) {
System.out.print(" ");
}
System.out.println(line);
}
この問題を解決する方法を理解できないようです。私は、番号を追加し、1ループスペースと数字のネストされたJava
for (int line = 1; line <= 5; line++) {
for (int space = 5; space >= line + 1; space--) {
System.out.print(" ");
}
System.out.println(line);
}
から降りて作業し、各ライン上のスペースを削除したいあなたの問題へのトリックは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);
}
はこの
をお試しください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("");
}
printlnに空の文字列を渡す必要はありません –
はい、空の文字列を使わずに行えます。 –
@PaulPearsonなぜこれを受け入れられた回答として選択しましたか? –
ありがとうTim!ここで思考過程を説明するのを助けてください。私は別のループを追加しなかったとは思えません。スーパーはここに新しい。 –
最初のループは '5 - i'スペースを左から右に出力し、2番目のループは同じライン上で数字i、i回を左から右に出力します。それでおしまい。 –
ありがとうTim! –