プロが教える店舗&オフィスのセキュリティ対策術

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();
}
}
}

そして、コンソールには、


☆☆
☆☆☆
☆☆☆☆
☆☆☆☆☆

と、階段状に表示されます。
この結果を


☆☆
☆☆☆
☆☆☆☆
☆☆☆☆☆

と、このようにピラミッド上に表示したいのですが、
どうすればよいのか分かりません。

どなたか、ご指導お願いいたします。

A 回答 (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倍という等幅フォントで出力すつ必要があります。

この回答への補足

ありがとうございます!
見事に表示されました!

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

補足日時:2008/10/22 09:53
    • good
    • 0
この回答へのお礼

ありがとうございました!

とても参考になりました!

お礼日時:2008/11/05 09:49

こんな感じでどうでしょうか?



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();
}
}
}

カーニングの関係で、ちょっとずれてしまう可能性もありますが・・・

この回答への補足

回答ありがとうございます。

試してみたのですが、

なんというか、塔が傾いたような形に表示され、
ピラミッド上になりませんでした。。。

自分でももう少し検証してみます!

補足日時:2008/10/22 09:48
    • good
    • 0

No1さんのソースをもとに、



1.ループに入る前に値を保持する変数(仮にbufとする)を""で定義。
2.System.out.print(" ");→bufに " "を足しこむ
3.System.out.print("☆");→bufに "☆"を足しこむ
4.System.out.print();→bufに 改行文字(\n)を足しこむ
5.ループが終わったらbufを表示。

うーん、もうちょっとぼかして書くべきだったかも・・・(回答書くのは嫌いなので)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!