- ベストアンサー
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(); } } } そして、コンソールには、 ☆ ☆☆ ☆☆☆ ☆☆☆☆ ☆☆☆☆☆ と、階段状に表示されます。 この結果を ☆ ☆☆ ☆☆☆ ☆☆☆☆ ☆☆☆☆☆ と、このようにピラミッド上に表示したいのですが、 どうすればよいのか分かりません。 どなたか、ご指導お願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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倍という等幅フォントで出力すつ必要があります。
その他の回答 (2)
- ProKaseifu
- ベストアンサー率51% (98/192)
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)
こんな感じでどうでしょうか? 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(); } } } カーニングの関係で、ちょっとずれてしまう可能性もありますが・・・
補足
回答ありがとうございます。 試してみたのですが、 なんというか、塔が傾いたような形に表示され、 ピラミッド上になりませんでした。。。 自分でももう少し検証してみます!
お礼
ありがとうございました! とても参考になりました!
補足
ありがとうございます! 見事に表示されました! ・・・表示されたのですが、自分ひとつ重要な制限を書き忘れていまして、 System.out.は一行しか記述してはならない。 場合はどうすればいいでしょうか?