• ベストアンサー

javaの条件分岐でコンソールにうまく表示できません(TmT)

eclipse3.4.1を使用して、Javaで下記のようなコードを書いたのですが、望んだ結果が得られません。 public class 条件分岐 { public static void main(String[] args){ for (int i = 1; i < 6; i++){ for (int j = 0; j < i; j++){ System.out.print("☆"); } System.out.println(); } } } そして、コンソールには、 ☆ ☆☆ ☆☆☆ ☆☆☆☆ ☆☆☆☆☆ と、階段状に表示されます。 この結果を ☆ ☆☆ ☆☆☆ ☆☆☆☆ ☆☆☆☆☆ と、このようにピラミッド上に表示したいのですが、 どうすればよいのか分かりません。 どなたか、ご指導お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

for (int i = 1; i < 6; i++){ int spaceNum = 5 - i; for(int r = 1; r <= spaceNum; r++) { System.out.print(" "); } for (int j = 0; j < i; j++){ System.out.print("☆"); } System.out.println(); } 質問の意味が間違えていなければこれでいいのかな? ただ、星(全角)の幅が、半角スペースの2倍という等幅フォントで出力すつ必要があります。

hallohal
質問者

お礼

ありがとうございました! とても参考になりました!

hallohal
質問者

補足

ありがとうございます! 見事に表示されました! ・・・表示されたのですが、自分ひとつ重要な制限を書き忘れていまして、 System.out.は一行しか記述してはならない。 場合はどうすればいいでしょうか?

その他の回答 (2)

回答No.3

No1さんのソースをもとに、 1.ループに入る前に値を保持する変数(仮にbufとする)を""で定義。 2.System.out.print(" ");→bufに " "を足しこむ 3.System.out.print("☆");→bufに "☆"を足しこむ 4.System.out.print();→bufに 改行文字(\n)を足しこむ 5.ループが終わったらbufを表示。 うーん、もうちょっとぼかして書くべきだったかも・・・(回答書くのは嫌いなので)

  • Gab_km
  • ベストアンサー率40% (20/50)
回答No.2

こんな感じでどうでしょうか? public class 条件分岐 { public static void main(String[] args) { for (int i = 1; i < 6; i++) { for (int j = 0; j < 6 - i; j++) { System.out.print(" "); // 半角スペースを何個か入れる } for (int j = 0; j < i; j++) { System.out.print("☆"); } System.out.println(); } } } カーニングの関係で、ちょっとずれてしまう可能性もありますが・・・

hallohal
質問者

補足

回答ありがとうございます。 試してみたのですが、 なんというか、塔が傾いたような形に表示され、 ピラミッド上になりませんでした。。。 自分でももう少し検証してみます!