• ベストアンサー

条件ループ

お世話になります。 JAVA初心者です。 以下のようにランダムに数字をINT型で作るまではできました。 double rnd=(Math.random()); Double db=new Double(rnd*10); int i=db.intValue(); そこで質問です。 出てきた値が「0」のときは何もせず再度上記のランダムを実行して「0」以外が出たときだけ次の作業に進むというプログラムはどのようにすればよいのでしょうか。 for文やif文も多少勉強中ですがすべて次の作業へ行ってしまうためランダムを繰り返す方法が分かりません。 よろしくお願いします。

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

  • ベストアンサー
  • ww-_-ww
  • ベストアンサー率51% (46/89)
回答No.1

プログラムではなく、言葉で説明すると 書かれた3行のプログラムを別メソッドとし、戻り値をint型にする。 While文の条件内でそのメソッドを実行し、戻り値が0かどうか判断すれば0の場合はループ、0以外の場合はループを抜けるという処理がつくれるんじゃないでしょうか?

homma
質問者

お礼

回答ありがとうございます。 While文ですか、まだ勉強していない項目でした。 勉強してみます。 なお、サンプルプログラムを教えていただけるとうれしいのです。 よろしくお願いします。

その他の回答 (3)

  • isi0611
  • ベストアンサー率34% (46/134)
回答No.4

お疲れ様です。 参考になればと思い、例を挙げさせて頂きます。 while文を使う場合の参考例 int i = 0; while(i == 0) { double rnd = (Math.random()); Double db = new Double(rnd * 10); i = db.intValue(); } for文、if文を使う場合の参考例 for(;;) { double rnd = (Math.random()); Double db = new Double(rnd * 10); int i = db.intValue(); if (i != 0) { break; } } ちなみに double rnd = (Math.random()); Double db = new Double(rnd * 10); int i = db.intValue(); の3行はシンプルに以下のように1行にもできますよ。 int i = (new Double(Math.random() * 10)).intValue();

homma
質問者

お礼

回答ありがとうございます。JAVA初心者なものでいまだ完成していませんでした。参考プログラム大変勉強になります。

  • ww-_-ww
  • ベストアンサー率51% (46/89)
回答No.3

ちょっとだけヒントを。 public class Main { public static void main(String args[]) { while(true){ System.out.println("乱数の値"+ test()); } } private static int test(){ double rnd=(Math.random()); Double db=new Double(rnd*10); return db.intValue(); } } 上記プログラムは無限ループとなっていますが、このWhile文のループを抜ける条件を考えればいいだけですよ。 あと、上記プログラムを実行してみれば、乱数に何が出力されているかわかると思います。

homma
質問者

お礼

何度もすみません。 本当にありがとうございました。 早速試してみます。 P.S OKWEBは役に立つサイトだと思います。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

do{}while(); を使うのがいいね。

homma
質問者

お礼

回答ありがとうございます。 do{}while();文はまだ勉強していませんでした。 早速調べてみます。

関連するQ&A