IT転職・プログラミングスクール

なかなかやっかいdo-while文【Java Silver 例題】

Java Silver 例題

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。

今回はdo-while文についてです。

 

while文を変形させたdo-while文。

同じループ処理ですが、使い方がwhile文と異なり混乱することが多々あります。

Java Silverではよく出題される問題なので、違いをしっかり知っておく必要があります。

 

問題:do-while文について

早速ですが、次の3問を解いてみてください。

問1

A. 「43210」と 表示される
B. 「4321」と 表示される
C. 「3210」と 表示される
D. 「321」と表示される
E.   コンパイルエラー
F.   無限ループになる

 

問2

A.   do{
a=a+2;
System.out.print(a);
}while(0<6);

B.   do{
a++;
System.out.print(a++);
}while(a<=4);

C.  do{
System.out.print(a++);
a++;
}while(a<=4);

D.   do{
a++;
System.out.print(a++);
}while(a<=6);

 

問3

A. 「01234」と 表示される
B. 「0123」と 表示される
C. 「012」と 表示される
D.   コンパイルエラー
E.   無限ループになる

 

いかがでしょうか?

 

 

答え

問1 E
問2 B
問3 D    です。

 

Java Silver 問題集
参考記事【Java Silver問題集】高頻出・間違えやすい問題たち

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。 出題確率が高く、間違いやすい例題が解説付きで100問以上あります。   Java Silver 問 ...

続きを見る

 

do-while文のポイントと解説

do-while文の構文は次の通りです。

do{
〜処理〜
}while( 条件式 ) ;

while文との違い条件式を判定するタイミングです。

 

while文はループの最初に条件式を判定するため、次のような出力結果になります。

while文の例

int i = 1;
while( i < 1 ){
System.out.println("ループ内");
i++;
}
System.out.println("ループ外");

出力結果

ループ外

 

一方、do-while文はループの最後に条件式を判定するため、while文とは異なる出力となります。

■do-while文の例

int i = 1 ;
do{
System.out.print("ループ内");
}while( i <3 ) ;
System.out.println("ループ外");

出力結果

ループ内
ループ外

このようにループの最後で条件式が判定されるため、1度はループ内の処理が実行されます。

 

また、do-while文の注意点として条件式のカッコ()の後にセミコロンが必要になります。

 

do-while文の省略形

do-while文は次のように中カッコ{}を省略して書くことができます。

int i = 0;
do
 System.out.print(i++);
while (i<3 );

出力結果

0 1 2

省略形にも注意すべきことが1つあります。

それは、ループ内の処理は1行しか書けないという点です。

ループ内に2行以上書いてしまうとコンパイルエラーになってしまいます。

 

解説

ここまでのポイントを理解していれば、今回の3問は楽に答えることができます。

 

問1

A. 「43210」と 表示される
B. 「4321」と 表示される
C. 「3210」と 表示される
D. 「321」と表示される
E.   コンパイルエラー
F.   無限ループになる

 

この問題では、whileループ中にaを出力するプログラムです。

しかし、このコードには9行目の条件式の後にセミコロンがありません。

したがって、コンパイルエラーになるので答えはEです。

 

問2

A.   do{
a=a+2;
System.out.print(a);
}while(0<6);

B.   do{
a++;
System.out.print(a++);
}while(a<=4);

C.  do{
System.out.print(a++);
a++;
}while(a<=4);

D.   do{
a++;
System.out.print(a++);
}while(a<=6);

 

このプログラムでは、7行目で前置インクレメントしてから出力し、8行目でまたインクレメントされます。

したがって、”1 3 5”が出力されます。

この出力結果と同じプログラムを探す必要があります。

Aは"2 4 6"が出力されるので誤りです。

Bは”1 3 5”が出力されるので正しいコードです。

Cは"0 2 4"が出力されるので誤りです。

Dは"1 3 5 7"が出力されるので誤りです。

したがって、答えはBです。

 

問3

A. 「01234」と 表示される
B. 「0123」と 表示される
C. 「012」と 表示される
D.   コンパイルエラー
E.   無限ループになる

 

この問題では、do-while文の省略形でループ処理をしようとしていますが、ループ内の処理文が2行あります。

省略形の場合、ループ内の処理文は1行しか書けないため、コンパイルエラーになります。

したがって、答えはDです。

 

 

Java Silver 問題集
参考記事【Java Silver問題集】高頻出・間違えやすい問題たち

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。 出題確率が高く、間違いやすい例題が解説付きで100問以上あります。   Java Silver 問 ...

続きを見る

 

-IT転職・プログラミングスクール
-,

Copyright© 人生2段飛ばし , 2020 All Rights Reserved Powered by AFFINGER5.