while文に関する問題1
コンソールに0~4までの数字を表示したいので、選択肢の中から、条件式に当てはまる条件を選んでください。
public class Main{
public static void main(String[] args) {
int a = 11;
int b = 0;
while ( 条件式 ) {
if (5 < a) {
System.out.println(b);
}
a--;
b++;
}
}
}
選択肢
- A) 5 < b
- B) a < 5
- C) true
- D) b < 5
- E) false
- F) 5 < a
正解は、、、、
D) b < 5
bが5より小さいときに繰り返すD)が入ります。
ちなみに選択肢を順に実行していくと
A)B)は、なにも表示されない。
C)無限ループになります。
E) コンパイルエラー
F) 0~5までの数字が表示されます。
do-while文に関する問題
コンソールに0~4までの数字を表示したいのですが、次のプログラムの4行目と6行目にエラーが発生しています。
どのように直せば正しく表示される組み合わせになるのか、選択肢の中から選んでください。
public class Main{
public static void main(String[] args){
int a = 0;
while( a < 5 ){
System.out.println(a++);
}do;
}
}
選択肢
- A)4行目:do 6行目:while ( a < 5 );
- B)4行目:do ( 5 < a ) 6行目:while;
- C)4行目:do 6行目:while ( 5 < a );
- D)4行目:do ( a < 5 ) 6行目:while;
正解は、、、
A)4行目:do 6行目:while ( a < 5 )
do-while分では、最初に「do」を書き込み、その後に繰り返し処理する内容を書き込みます。そのあと、繰り返しの条件を書き込む「while」を書き込みます。設問では、「do」から書き始めているのでエラーになります。
ほかの選択肢を実行した場合、、、
- B)4行目:do ( 5 < a ) 6行目:while; →コンパイルエラー
- C)4行目:do 6行目:while ( 5 < a ); →0を表示して止まります。
- D)4行目:do ( a < 5 ) 6行目:while; →コンパイルエラー
となります。
while文とdo-while文の複合問題
次のプログラムをコンパイル、実行したときの結果として正しいものはどれでしょうか?
public class Main{
public static void main(String[] args){
int a = 0;
while (a < 5)
do
a++;
System.out.print(a);
while(true);
}
}
選択肢
- A)「01234」と表示される。
- B)コンパイルエラーになる。
- C)無限ループになる。
- D)実行時に例外がスローされる。
- E)何も表示されない。
正解は、、、、
B)コンパイルエラーになる。
この設問では、「{}」が省略されています。省略された場合は次の1行が繰り返しの対象となり、それ以降は含まれません。ここでの1行とは「;(セミコロン)」までとなるので、1行に2つ続けて書いても実行はされません。
このコードがコンパイルエラーにならないように書き直した場合は、無限ループが発生し、書き直した上で、ネストされた時の繰り返し条件を「true」から「 a < 5 」に書き換えると「01234」と表示されるようになります。
while文やdo-while文の分岐の問題は、「{}」の省略など、迷いが出やすくなるので、省略された問題が出題された場合、どこに「{}」が入るのか、そして処理の対象がどこまでになるのか復習しておきましょう。
コメント