• 締切済み

Java do while文

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

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.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); → 画面出力(以下略 人間なら、そろそろ無駄なことをしていると気付いて、やめるころです。 ですが、コンピュータはそんなことは気にせず、言われた通りに忠実に繰り返します。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

>int num = new Random().nextInt(10); ここで乱数を発生させているのに >num = 9; 固定値にしたらダメです。 >}while(num < 10); 偶数か0だったら(0も偶数と考えると、要するに2で割ったあまりが0ならば) という条件になっていません。

s_yonezawa
質問者

補足

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

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

どこまでわかった? 何が分からない? 自分の頭を使う気はある?

s_yonezawa
質問者

補足

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); } } までわかりました。出力結果がるーぷしてしまいます。

関連するQ&A

専門家に質問してみよう