続・とってもわかりやすいJAVA 【サンプルプログラム9 文字列の式を計算してみよう】


今回は文字列で定義した式を解析し、その計算結果を求めてみたいと思います!

例えば、“1+2”という文字列から1+2を実行し3を求める、といったようなことを行います。
なかなか複雑なので、今回は計算する数字は2つだけとします。
主にStringクラスのメソッドを用いて作っていきますので、正規表現は使用しません。
また、本来であれば例外処理も書いた方がよいのですが、今回はソースを短くするため割愛しています。

みなさんも是非ご自身で作ってみてください!
ポイントは以下の通り

  1. 式から演算子を抽出する
  2. 演算子の前後をそれぞれ数字に変換する
  3. 演算子の種類に応じて計算処理を分岐させる

といったところでしょうか。

ではプログラムをみてみましょう!

 

■ParseAndCalcSample.java


public class ParseAndCalcSample {
    public static void main(String[] args) {
        String formula = "1/3"; // 計算式
        System.out.println(parseAndCalc(formula));
    }

    static double parseAndCalc(String formula) {
        char[] opes = { '+', '-', '*', '/' };
        char ope = ' ';
        int opeIdx = 0;
        for (char o : opes) {
            opeIdx = formula.indexOf(o);
            if (opeIdx != -1) {
                ope = formula.charAt(opeIdx);
                break;
            }
        }

        double x = Double.parseDouble(formula.substring(0, opeIdx));
        double y = Double.parseDouble(formula.substring(opeIdx + 1,formula.length()));

        double answer;
        if (ope == '+') {
            answer = x + y;
        } else if (ope == '-') {
            answer = x - y;
        } else if (ope == '*') {
            answer = x * y;
        } else {
            answer = x / y;
        }
        return answer;
    }
}

 

 

 

■解説
8~17行目で使用されている演算子とインデックスを求めています。
19,20行目では演算子の前後の数をdouble型に変換しています。
割り算の場合を考えたらint型だと小数を表示できないですね。
文字列の一部を切り取るにはStringクラスに用意されているsubstringメソッドを使用します。
22~30行目で演算子に応じた計算結果をreturnしています。

 

  • このエントリーをはてなブックマークに追加

PAGE TOP