【Java入門】switch〜case文を使って簡単な電卓プログラムを作る方法
この記事では、switch〜case文を使って簡単な電卓プログラムを作成する方法を解説します。switch文は式を評価し、その値がどのcase句と一致するかを調べて、一致したcaseに関連付けられた処理を実行します。条件分岐が多くなる場合、if-else文を何度も書き並べるよりも、switch文の方がすっきりと読みやすいコードになるのが特徴です。
実装する算術演算
今回作成する電卓プログラムは、次の5種類の演算に対応しています。
- + : 加算(足し算)
- - : 減算(引き算)
- * : 乗算(掛け算)
- / : 除算(割り算)
- % : 剰余(割り算の余り)
入出力の例
入力
たとえば、次のような入力を与えた場合を考えてみましょう。
The two inputs: 40.0 and 12.0 Operator:%
出力
期待される出力は次の通りです。
The result is 40.0 % 12.0 = 4.0
アルゴリズム
プログラムの全体の流れは以下のようになります。
Step 1 - 処理を開始する Step 2 - my_input_1、my_input_2、my_result の3つの変数と、char型の operator を宣言する Step 3 - ユーザーから必要な値を読み込む(または値をあらかじめ定義しておく) Step 4 - operator の値を分岐条件として、加算・減算・乗算・除算・剰余を計算する case 文を定義する Step 5 - 入力された演算子に対応する case 文へ処理を移し、my_input_1 と my_input_2 の算術演算を実行する Step 6 - 計算結果を表示する Step 7 - 処理を終了する
例1:ユーザーからの入力を受け付ける場合
この例では、Scannerクラスを使ってユーザーの入力を受け取ります。プログラムを実行すると、まず2つの数値の入力を求められ、続いて使用したい演算子(+、-、*、/、%)のいずれかを入力します。
import java.util.Scanner;
public class OperatorSwitch {
public static void main(String[] args) {
char operator;
Double my_input_1, my_input_2, my_result;
System.out.println("Required packages have been imported");
Scanner my_scanner = new Scanner(System.in);
System.out.println("A reader object has been defined ");
System.out.println("Enter the first number");
my_input_1 = my_scanner.nextDouble();
System.out.println("Enter the second number");
my_input_2 = my_scanner.nextDouble();
System.out.println("Enter any of the following operator: +, -, *, /, %");
operator = my_scanner.next().charAt(0);
switch (operator) {
case '+':
my_result = my_input_1 + my_input_2;
System.out.println(my_input_1 + " + " + my_input_2 + " = " + my_result);
break;
case '-':
my_result = my_input_1 - my_input_2;
System.out.println(my_input_1 + " - " + my_input_2 + " = " + my_result);
break;
case '*':
my_result = my_input_1 * my_input_2;
System.out.println(my_input_1 + " * " + my_input_2 + " = " + my_result);
break;
case '/':
my_result = my_input_1 / my_input_2;
System.out.println(my_input_1 + " / " + my_input_2 + " = " + my_result);
break;
case '%':
my_result = my_input_1 % my_input_2;
System.out.println(my_input_1 + " % " + my_input_2 + " = " + my_result);
break;
default:
System.out.println("The operator you have selected is invalid");
break;
}
}
}
実行結果
Required packages have been imported A reader object has been defined Enter the first number 40 Enter the second number 12 Choose any of the following operator: +, -, *, /, % % 40.0 % 12.0 = 4.0
例2:値をあらかじめ定義しておく場合
こちらの例では、2つの数値と演算子をコードの中で直接定義しています。実行時のユーザー入力は不要で、定義された値をもとに計算が行われ、その結果がコンソールに表示されます。
public class OperatorSwitch {
public static void main(String[] args) {
char operator;
Double my_input_1, my_input_2, my_result;
my_input_1 = 40.0;
my_input_2 = 12.0;
operator = '%';
System.out.println("The two numbers are defined as " + my_input_1 + " and " + my_input_2);
System.out.println("The operator is defined as " + operator);
switch (operator) {
case '+':
my_result = my_input_1 + my_input_2;
System.out.println(my_input_1 + " + " + my_input_2 + " = " + my_result);
break;
case '-':
my_result = my_input_1 - my_input_2;
System.out.println(my_input_1 + " - " + my_input_2 + " = " + my_result);
break;
case '*':
my_result = my_input_1 * my_input_2;
System.out.println(my_input_1 + " * " + my_input_2 + " = " + my_result);
break;
case '/':
my_result = my_input_1 / my_input_2;
System.out.println(my_input_1 + " / " + my_input_2 + " = " + my_result);
break;
case '%':
my_result = my_input_1 % my_input_2;
System.out.println(my_input_1 + " % " + my_input_2 + " = " + my_result);
break;
default:
System.out.println("The operator you have selected is invalid");
break;
}
}
}
実行結果
The two numbers are defined as 40.0 and 12.0 The operator is defined as % 40.0 % 12.0 = 4.0
switch文を書くときのポイント
- break文を忘れない: 各caseの最後にbreak文を書かないと、一致したcase以降の処理がそのまま流れ落ちて(fall-through)、意図しない演算まで実行されてしまいます。
- default句で不正な入力に備える: どのcaseにも一致しなかった場合の処理をdefault句に記述しておけば、「+、-、*、/、%」以外の無効な演算子が入力された際にエラーメッセージを表示できます。
- 分岐できる型に注意する: switch文で条件にできるのは、int、char、String など限られた型です。今回はchar型の演算子1文字を分岐のキーとしています。
このように、switch〜case文を活用すれば、複雑なif-elseの連鎖を避けながら、シンプルで整理された電卓プログラムを実装できます。ぜひ実際にコードを動かして、それぞれの演算子での挙動を確認してみてください。
-
【Java】大文字と小文字を区別せずに文字列を比較する方法を解説
Javaでは、いくつかの異なる方法で文字列を比較することができます。それぞれ特徴が異なるため、用途に応じて適切な方法を選ぶことが重要です。 compareTo()メソッドを使う方法:2つの文字列を辞書順(Unicode値ベース)に比較し、大小関係まで判定できます。 == 演算子を使う方法:変数の参照(オブジェクトの同一性)を比較するため、値の比較には不向きです。 equals()メソッドを使う方法:大文字・小文字を含めた文字列の内容そのものを比較できます。 以下、それぞれの方法を詳しく見ていきましょう。 1. compareTo()メソッドで比較する compareTo()メソッドは、2
-
コマンドプロンプトでJavaプログラムをコンパイル・実行する方法【初心者向けガイド】
多くの統合開発環境(IDE)では、環境の中だけでプログラムのコンパイルと実行が完結しますが、実はコマンドプロンプトを使ってもJavaプログラムをコンパイル・実行することができます。システムにJDK(Java Development Kit)をインストールし、環境変数のPATHを正しく設定しておけば、誰でもコマンドプロンプトからJavaプログラムをコンパイルして実行できるようになります。ここでは、その基本的な手順を順番に解説します。コンパイルから実行までの手順ステップ1: メモ帳やお好みのIDEを使って、Javaプログラムを作成します。ステップ2: 作成したファイルを「Demo.java」という