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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) エクセルから、パワーポイントのスライドを複数作成する。 1 2022/07/08 09:40
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- Ruby VBA 2 2023/01/14 14:14
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで3秒だけ時間を止めたい
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
Excel vba でコンボボックスの...
-
Application->Run();の機能につ...
-
VBA for i=1 to lastrow
-
CSVファイルの特定の行だけを読...
-
ダイアログのテキストにマウス...
-
エクセルの当番表を作っていま...
-
C言語でファクト関数を使わずに...
-
xmplayの使い方
-
素数であるかどうかを判定する...
-
XMLファイルをDataSetに読込む...
-
VBA Boxが空白の場合のメッセー...
-
アクティブセルから、A列最終行...
-
JQueryのスライドショーを停止...
-
アルゴリズムでのループの終了...
-
vbscriptでIE自動入力(途中で...
-
再帰関数のインライン展開
-
ガレージバンド のサンプリング...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
ループ7回目の悪役令嬢は、元敵...
-
UWSCの終了の仕方
-
Escキーを押すと、中断する時と...
-
エクセルの当番表を作っていま...
-
GIFアニメをループさせたくない
-
VBAで3秒だけ時間を止めたい
-
どなたかこのプログラミングを...
-
VBA for i=1 to lastrow
-
DOSコマンドのループ内のTIMEコ...
-
ListBox 複数選択 で オートフ...
-
vbscriptでIE自動入力(途中で...
-
vb.netからエクセル関数書き込み
-
DoEventsが必要な理由について
-
Java 南京錠
-
アクティブセルから、A列最終行...
-
テキストボックスの名前に変数...
-
範囲指定したセルを1つずつ飛...
-
VBA Dir関数でファイルをループ...
おすすめ情報