黒本学習日記

第一章 

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回だけ実行

        }

    }

}

動作解説:

  1. 変数 val は 7 で初期化されます。
  2. 変数 flg は true に設定され、if (flg == true) の条件が true となります。
  3. do-while ループは少なくとも1回は実行されるため、まず val の値(7)が出力されます。
  4. その後、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「コンパイルエラーが発生する」が正しい解答です。

コメント

タイトルとURLをコピーしました