前回は例外処理(try-catch)を学び、これでJavaの基礎的な文法を一通り学んだことになります。 今回はこれまでの内容を組み合わせた応用編として、「switch文」という新しい構文を紹介しながら、簡単な電卓プログラムを作っていきます。
switch文の基本
これまで条件分岐にはif文を使ってきましたが、ひとつの変数の値によって処理を細かく分けたい場合、if文を何度も書くと長くなりがちです。
if (operator.equals("+")) {
// 処理
} else if (operator.equals("-")) {
// 処理
} else if (operator.equals("*")) {
// 処理
}
こうした「ひとつの値によって処理を分岐させたい」場合に便利なのが「switch文」です。
switch (変数) {
case 値1:
// 処理
break;
case 値2:
// 処理
break;
default:
// どの値にも当てはまらない場合の処理
}
case で値ごとの処理を書き、break でswitch文を抜けます。break を書き忘れると、次の case の処理までそのまま実行されてしまうので注意が必要です。どの case にも当てはまらない場合は default の処理が実行されます。
サンプルコード(電卓プログラム)
ファイル作成
「Java02」フォルダに CalculatorTest.java という名前でファイルを作成します

コード入力
以下のコードを入力します。
import java.util.Scanner;
public class CalculatorTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("1つ目の数値を入力してください:");
double num1 = sc.nextDouble();
System.out.print("演算子を入力してください(+ - * /):");
String operator = sc.next();
System.out.print("2つ目の数値を入力してください:");
double num2 = sc.nextDouble();
double result = 0;
boolean isValid = true;
try {
switch (operator) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
result = num1 / num2;
break;
default:
System.out.println("エラー:不明な演算子です");
isValid = false;
}
if (isValid) {
System.out.println(num1 + " " + operator + " " + num2 + " = " + result);
}
} catch (ArithmeticException e) {
System.out.println("エラー:0で割ることはできません");
}
sc.close();
}
}

コンパイル
javac CalculatorTest.java

実行
java CalculatorTest

次にターミナルに数値と演算子を入力します。
1つ目の数値を入力してください:10
演算子を入力してください(+ - * /):*
2つ目の数値を入力してください:4
実行結果は次のようになります。
10.0 * 4.0 = 40.0

コードの解説
switch (operator) の部分で、入力された演算子の文字列によって処理を分岐させています。case "+": のように、それぞれの演算子に対応する計算を書き、計算後は break; でswitch文を抜けています。
default: の部分には、+ - * / 以外の文字が入力された場合の処理を書いています。今回は isValid という boolean 型の変数を false にすることで、その後の計算結果の表示をスキップするようにしています。
割り算の case "/": では、num2 が0だった場合に例外が発生する可能性があります。そこで、switch文全体を前回学んだ try ブロックで囲み、catch (ArithmeticException e) でゼロ除算のエラーをキャッチしています。これにより、0で割るような入力があってもプログラムが強制終了することなく、エラーメッセージを表示して安全に終了できます。
このプログラムは、これまで学んできた要素の組み合わせでできています。Scannerでユーザーからの入力を受け取り、switch文で処理を分岐し、try-catchで例外に備えるという流れは、実際のアプリ開発でもよく使われる組み合わせです。
応用として、while文 と組み合わせれば「終了するまで何度も計算を繰り返す電卓」にすることもできます。
String continueFlag = "y";
while (continueFlag.equals("y")) {
// 計算処理
System.out.print("続けますか?(y/n):");
continueFlag = sc.next();
}
このように、これまで学んだ繰り返し処理と組み合わせることで、より実用的なプログラムへと発展させることができます。
まとめ
switch文を使うことで、ひとつの変数の値によって処理を分岐させる際に、if文よりもすっきりとしたコードを書けるようになります。case ごとに処理を書き、break で抜けるという基本の形と、break を忘れると次の case まで実行されてしまう点をしっかり覚えておきましょう。今回の電卓プログラムは、Scanner・switch文・try-catchという、これまで学んできた要素を組み合わせたものです。
2026/06/21(日) ぱんまる


コメント