A 回答 (3件)
- 最新から表示
- 回答順に表示
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);
→ 画面出力(以下略
人間なら、そろそろ無駄なことをしていると気付いて、やめるころです。
ですが、コンピュータはそんなことは気にせず、言われた通りに忠実に繰り返します。
No.2
- 回答日時:
>int num = new Random().nextInt(10);
ここで乱数を発生させているのに
>num = 9;
固定値にしたらダメです。
>}while(num < 10);
偶数か0だったら(0も偶数と考えると、要するに2で割ったあまりが0ならば)
という条件になっていません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UWSCの終了の仕方
-
画面を強制的に再描画させる方法
-
エディットボックスのテキスト...
-
CSVファイルの特定の行だけを読...
-
VBA Dir関数でファイルをループ...
-
アクティブセルから、A列最終行...
-
範囲指定したセルを1つずつ飛...
-
VBAで3秒だけ時間を止めたい
-
無限ループの防ぐ方法
-
テキストボックスの名前に変数...
-
DoEventsが必要な理由について
-
ExcelVBA FindNextを使用して条...
-
vb.netからエクセル関数書き込み
-
多重ループの抜けだし方
-
VisualStudioにてモザイクの画...
-
エクセル関数で1〜12の数字がル...
-
vbscriptでIE自動入力(途中で...
-
JSPでのrequest.getParameterに...
-
レインボー色ってどうやって表...
-
DOSコマンドのループ内のTIMEコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
DoEventsが必要な理由について
-
UWSCの終了の仕方
-
Escキーを押すと、中断する時と...
-
VBA for i=1 to lastrow
-
vb.netからエクセル関数書き込み
-
GIFアニメをループさせたくない
-
VBAでの一時停止と再開の方法
-
「人を傷つけることは悪いこと...
-
VBAで3秒だけ時間を止めたい
-
DOSコマンドのループ内のTIMEコ...
-
アクティブセルから、A列最終行...
-
CSVファイルの特定の行だけを読...
-
範囲指定したセルを1つずつ飛...
-
ループフリー
-
VBA for文が止まらない
-
null 参照の例外が実行時に発生...
-
vbscriptでIE自動入力(途中で...
-
フラグについて
-
VBA Dir関数でファイルをループ...
おすすめ情報