みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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


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

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


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

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

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

投稿日時 - 2008-10-21 20:59:35

QNo.4419220

困ってます

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

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

投稿日時 - 2008-10-21 21:23:49

補足

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

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

投稿日時 - 2008-10-22 09:53:01

お礼

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

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

投稿日時 - 2008-11-05 09:49:57

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

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

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

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

投稿日時 - 2008-10-22 13:07:29

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

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

投稿日時 - 2008-10-21 23:40:49

補足

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

試してみたのですが、

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

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

投稿日時 - 2008-10-22 09:48:07