アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
JAVA初心者です。
以下のようにランダムに数字をINT型で作るまではできました。
double rnd=(Math.random());
Double db=new Double(rnd*10);
int i=db.intValue();

そこで質問です。
出てきた値が「0」のときは何もせず再度上記のランダムを実行して「0」以外が出たときだけ次の作業に進むというプログラムはどのようにすればよいのでしょうか。
for文やif文も多少勉強中ですがすべて次の作業へ行ってしまうためランダムを繰り返す方法が分かりません。
よろしくお願いします。

A 回答 (4件)

プログラムではなく、言葉で説明すると



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

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

お礼日時:2009/02/10 10:42

お疲れ様です。


参考になればと思い、例を挙げさせて頂きます。

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();
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/13 20:25

ちょっとだけヒントを。



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文のループを抜ける条件を考えればいいだけですよ。
あと、上記プログラムを実行してみれば、乱数に何が出力されているかわかると思います。
    • good
    • 0
この回答へのお礼

何度もすみません。
本当にありがとうございました。
早速試してみます。

P.S OKWEBは役に立つサイトだと思います。

お礼日時:2009/02/10 11:44

do{}while();


を使うのがいいね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/10 10:43

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