Java
 Computer >> コンピューター >  >> プログラミング >> Java

【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の連鎖を避けながら、シンプルで整理された電卓プログラムを実装できます。ぜひ実際にコードを動かして、それぞれの演算子での挙動を確認してみてください。

  1. 【Java】大文字と小文字を区別せずに文字列を比較する方法を解説

    Javaでは、いくつかの異なる方法で文字列を比較することができます。それぞれ特徴が異なるため、用途に応じて適切な方法を選ぶことが重要です。 compareTo()メソッドを使う方法:2つの文字列を辞書順(Unicode値ベース)に比較し、大小関係まで判定できます。 == 演算子を使う方法:変数の参照(オブジェクトの同一性)を比較するため、値の比較には不向きです。 equals()メソッドを使う方法:大文字・小文字を含めた文字列の内容そのものを比較できます。 以下、それぞれの方法を詳しく見ていきましょう。 1. compareTo()メソッドで比較する compareTo()メソッドは、2

  2. コマンドプロンプトでJavaプログラムをコンパイル・実行する方法【初心者向けガイド】

    多くの統合開発環境(IDE)では、環境の中だけでプログラムのコンパイルと実行が完結しますが、実はコマンドプロンプトを使ってもJavaプログラムをコンパイル・実行することができます。システムにJDK(Java Development Kit)をインストールし、環境変数のPATHを正しく設定しておけば、誰でもコマンドプロンプトからJavaプログラムをコンパイルして実行できるようになります。ここでは、その基本的な手順を順番に解説します。コンパイルから実行までの手順ステップ1: メモ帳やお好みのIDEを使って、Javaプログラムを作成します。ステップ2: 作成したファイルを「Demo.java」という