第一章
Java SE 11 第2章 Javaの基本データ型と文字列操作 ver.2
- プリミティブ型のデータ
- リテラル
- varを使ったローカル変数の型推論
- Stringクラス、Stringクラスのメソッド
- 文字列同士の連結
- StringBuilderクラス、StringBuilderクラスのメソッド
2_1. 次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)
public class Main {
public static void main(String[] args) {
int val = 7;
bool flg = true;
if (flg == true) {
do {
System.out.println(val);
} while (val > 10);
}
}
}
A. 7が1回だけ表示される
B. 何も表示されない
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
解答: C. コンパイルエラーが発生する
2_1. 詳しい解説:
このプログラムは、以下の理由によりコンパイルエラーが発生します。
問題1: bool 型が存在しない
Javaでは、ブール値を表す型は boolean です。プログラム内で bool が使われていますが、これはJavaのデータ型としては存在しないため、コンパイル時にエラーが発生します。bool を boolean に変更することで、コンパイルが通るようになります。
誤り:
bool flg = true; // Javaには “bool” 型は存在しない
修正後:
boolean flg = true; // “boolean” が正しい
問題2: do-while ループの動作
このプログラムでは、do-while ループを使っています。do-while ループは、条件にかかわらず少なくとも1回は実行されるという特徴があります。もし bool 型のエラーが修正された場合、val の値が 7 であり、while (val > 10) という条件が false なので、ループは1回だけ実行されます。
したがって、このプログラムがコンパイルエラーなく動作する場合、1回だけ 7 が出力されます。
コードの修正版と動作の解説
修正後のコード:
public class Main {
public static void main(String[] args) {
int val = 7; // 変数 val に 7 を代入
boolean flg = true; // 変数 flg を true に設定
// flg が true の場合に以下の処理が実行される
if (flg == true) {
do {
System.out.println(val); // val の値 (7) を出力
} while (val > 10); // 条件 val > 10 は false なのでループは1回だけ実行
}
}
}
動作解説:
- 変数 val は 7 で初期化されます。
- 変数 flg は true に設定され、if (flg == true) の条件が true となります。
- do-while ループは少なくとも1回は実行されるため、まず val の値(7)が出力されます。
- その後、val > 10 の条件が評価されますが、この条件は false なので、ループは1回で終了します。
出力結果:
7
他の選択肢の評価:
- A. 7が1回だけ表示される
これは、もし bool 型の誤りがなければ正しい選択肢です。しかし、bool 型が間違っているため、この選択肢は不正解です。 - B. 何も表示されない
これは誤りです。do-while ループは少なくとも1回は実行されるため、必ず 7 が1回表示されます。 - D. 実行時に例外がスローされる
例外がスローされる状況ではありません。このプログラムがコンパイルされれば正常に動作し、実行時エラーは発生しません。
コンパイルエラーに関する詳細:
コンパイル時に表示されるエラーメッセージは次のようになります:
error: cannot find symbol
bool flg = true;
^
symbol: class bool
location: class Main
このエラーメッセージは、Javaに bool という型が存在しないことを示しています。このエラーを解消するためには、bool を boolean に修正する必要があります。
まとめ:
このプログラムは bool 型が存在しないため、コンパイルエラーが発生します。bool を boolean に修正すると、プログラムはコンパイルでき、do-while ループが1回実行されて 7 が1回出力されます。選択肢C「コンパイルエラーが発生する」が正しい解答です。

コメント