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

do while文を使って、int num = new Random().nextInt(10);を利用して、ランダム数値が2で割り切れるか0だったらwhile文を終わらせるdo-while文を作成したいのですが、わかりません。わかる方、教えてください。お願いします。

A 回答 (3件)

プログラムを概略を日本語で書いてみましょう。



1) 乱数を求める
2) 1)で求めた乱数が 0 または2で割り切れるならループ終了。そうでないなら 1) へ

となります。
ここまでがわからないなら、問題文を読むことができていません。
Javaの前に国語の復習をしましょう。


do~whileループは
do {
 繰り返す内容
} while( ここの条件が成り立つときは、ループを続ける/ 不成立ならループを止める) ;
となっています。

これと先程の「日本語」と合せれば

do {
繰り返す内容「1) 乱数を求める」
} while ( 「→の条件でないなら」ループを続ける/「1)で求めた乱数が 0 または2で割り切れるなら」ループを止める) ;

となります。
この中の「日本語」を「Java言語」に翻訳したものが「Javaのプログラム」です。

whileの中はちょっと複雑に見えます。
しかし、落ち着いて考えれば
『「1)で求めた乱数が 0 または2で割り切れる」 でないなら』ループ継続
であり
! (「1)で求めた乱数が 0 または2で割り切れる」)
だとわかります。 ! は 条件の真偽を反転させる演算子です。
また、算数の知識があれば、 「1)で求めた乱数が 0 または2で割り切れる」とは偶数であり、「偶数でない」とは「奇数である」ということだとわかります。

whileで判定せずに、ifで判定させ、breakでループを脱出する、という手段もあります。
ですが、この問題程度に使うテクニックではありません。





#1の補足にあったプログラム、ご自身で理解できていないようですが、この程度の規模なら、あなたがコンピュータになって、書いてある通りに実行するのもよいでしょう。

まず、次のものを用意します
○鉛筆と消しゴム : 下記へ書いたり消したりするのに使います。
○(紙の)メモ帳 : 変数の記憶に使います。
○罫線入りレポート用紙 : 画面表示に相当します。
○サイコロ: できれば 0~9の目が出るもの。無ければ1~6で代用


int num = new Random().nextInt(10);
→ メモに
num 「  」
と書きます。変数numを記憶するところです。
Random().nextint(10)は毎回サイコロを振って値を決めます。
例えば、ここで「3」と出たら、メモに
num「 3 」
と書き込みます

num = 9;
→変数num を変更します。
まず、消しゴムで「」の中を消します。次に「9」を書きます。

do{
→ doの開始です。whileでここに戻ってきます。

System.out.println(num / 2);
→ 画面出力なので、num/2 を計算して、レポート用紙に 書きます。
num はint、2もint なので、 int / int = 小数点以下切り捨て となることに注意。

}while(num < 10);
→ メモには num「 9 」と書いてあるはずです
9<10なので、doへ戻ります。

do{
→ 戻ってきました。

System.out.println(num / 2);
→ 画面出力なので、num/2 を計算して、レポート用紙に 書きます。
num はint、2もint なので、 int / int = 小数点以下切り捨て となることに注意。

}while(num < 10);
→ メモには num「 9 」と書いてあるはずです
9<10なので、doへ戻ります。

do{
→ 戻ってきました。

System.out.println(num / 2);
→ 画面出力(以下略

人間なら、そろそろ無駄なことをしていると気付いて、やめるころです。
ですが、コンピュータはそんなことは気にせず、言われた通りに忠実に繰り返します。
    • good
    • 0

>int num = new Random().nextInt(10);



ここで乱数を発生させているのに

>num = 9;

固定値にしたらダメです。

>}while(num < 10);

偶数か0だったら(0も偶数と考えると、要するに2で割ったあまりが0ならば)
という条件になっていません。

この回答への補足

if文も使ったほうがいいということですか?

補足日時:2014/09/26 15:08
    • good
    • 0

どこまでわかった?



何が分からない?

自分の頭を使う気はある?

この回答への補足

public static void main(String [] args){

int num = new Random().nextInt(10);

num = 9;

do{

System.out.println(num / 2);

}while(num < 10);

System.out.println("余りは:" + num);

}

}

までわかりました。出力結果がるーぷしてしまいます。

補足日時:2014/09/26 13:31
    • good
    • 0

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