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

解決済みの質問

JAVAのfor文で困っています。

JAVAの勉強をしていますが、本の練習問題でわからなくて困っています。for文で以下の処理を行いたいです(do,whileはなしです)が、
*を5個ごとに改行したいのですが、改行してくれません。

問題の部分↓

if (n % 5 == 0)
System.out.println();

何か良い方法はありませんか?お願いします。

-------------------------------------------------
//(数を読み込んで)だ個数だけ * を5個ごと改行しながら表示

int n = 0;
for (int i = n; n <= 0;){
System.out.print("何個*を表示しますか : ");
n = stdIn.nextInt();
}

for (int i = 1; i <= n; i++){
System.out.print("*");
if (n % 5 == 0)
System.out.println();
}

------------------------------------------------

投稿日時 - 2008-12-25 13:00:01

QNo.4581983

困ってます

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

if (n % 5 == 0)がおかしいです。
nっていうのは*をいくつ表示するかっていうものです。
で5個ごとに改行したいなら
if(i % 5 ==0)にしないといけないと思います。

投稿日時 - 2008-12-25 15:19:39

お礼

if (i % 5 == 0) ですね、思ってみれば小さなミスでした。
ありがとうございます。

投稿日時 - 2008-12-25 22:21:22

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

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

回答(4)

ANo.3

少々屁理屈ですが、for文のみで行う方法を考えましたので参考にでもしてもらえると幸いです。

int n=28,count=0,length=0;
for(int i=0;i<n/5;i++){
count++;
length=(n/5==count)?3:5;
for(int j=0;j<length;j++){
System.out.print("*");
}
System.out.println();
}

投稿日時 - 2008-12-25 14:42:42

お礼

ごめんなさい。難しかったです。

投稿日時 - 2008-12-25 22:19:34

ANo.2

if (i % 5 == 0)
System.out.println();

投稿日時 - 2008-12-25 14:34:59

お礼

if (n % 5 == 0) でした。理屈がわかりました。
ありがとうございます。

投稿日時 - 2008-12-25 22:18:18

ANo.1

このように記述してはどうですか?
------------------------------------------
for (int i = 1; i <= n; i++)
{
if (i % 5 == 0)
{
System.out.println("5個置きです。");
}
}
------------------------------------------
for文の中で宣言しているint i は1から開始し、
ループする毎に1ずつカウントアップされていきます。
for文の中でif文を用意し、ここでカウンタであるiが
5で割りきれる場合に中の処理を行います。

こうすればnが5以上であれば最低1回はif内が実行されるし、
nが13などの場合にも5周目、10周目にif内が実行されるはずです。

投稿日時 - 2008-12-25 13:10:42

補足

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

ヒントをもらえたので、以下を試しましたが、if か elseの片方しかループできないです(n % 5 != 0 にすると *改行 だけします)

//nを6とすると
for (int i = 1; i <= n; i++){
if (n % 5 == 0) {
System.out.println("*");
} else {
System.out.print("*");
}
}

-----表示-----------------------
******

投稿日時 - 2008-12-25 13:31:55

お礼

見落としてました。
if (n % 5 == 0) でうまくいきました。

投稿日時 - 2008-12-25 22:16:40

あなたにオススメの質問