アプリ開発初心者の暇つぶしAndroid体験記

アプリ開発初心者がAndroidアプリ開発始めました。日々学んだことをアウトプットしていきます。

電卓を作ろう【序章】

やっとアプリ開発らしくなってきました。笑
今回は電卓を作り始める前に、前回までの不具合を解消しておきたいと思います!


改善点は2つ

  1. 小数点以下の桁に対応する
  2. 割る数に0が入っても落ちないようにする

それではやっていきます!

1. 浮動小数点型を使う

修正前は以下の通り、結果をLong型に格納していました。

Long resultPlus = number1 + number2;
result.setText(number1 + "+" + number2 + "=" + resultPlus.toString());

Long型では整数しか扱えないので、double型に変えていきます。
修正後のソースがこちら!

@Override
public void onClick(View v) {

    // 2020.02.23 小数点対応のため修正
    double number1 = Double.parseDouble(editNum1.getText().toString());
    double number2 = Double.parseDouble(editNum2.getText().toString());
    String text = "";

    switch (v.getId()){

        case R.id.plus:

            // 足し算処理
            // 2020.02.23 小数点対応のため修正
            double resultPlus = number1 + number2;
            text = number1 + "+" + number2 + "=" + resultPlus;
            break;

        case R.id.minus:

            // 引き算処理
            // 2020.02.23 小数点対応のため修正
            double resultMinus = number1 - number2;
            text = number1 + "-" + number2 + "=" + resultMinus;
            break;

        case R.id.multi:

            // 掛け算処理
            // 2020.02.23 小数点対応のため修正
            double resultMulti = number1 * number2;
            text = number1 + "×" + number2 + "=" + resultMulti;
            break;

        case R.id.div:

            // 割り算処理
            // 2020.02.23 小数点対応のため修正
            double resultDiv = number1 / number2;
            text = number1 + "÷" + number2 + "=" + resultDiv;
            break;

    }
    result.setText(text);
}

実行結果は後程確認します!

2. 0が入力された場合の処理を実装

続いてNumber2に0を入れて割り算を実行すると
アプリが落ちてしまう現象です。
今回double型に変えたことによりArithmeticExceptionは
発生しなくなりました。

f:id:mtnanao:20200222115216p:plain:w200

このように計算結果がInfinityとなっています。
例外は発生しないため、try-catchではなくif文で分岐させていきます。

case R.id.div:
    if (number2 == 0) {
        text = "エラー";
    } else {
        Double resultDiv = number1 / number2;
        text = number1 + "÷" + number2 + "=" + resultDiv;
    }
    break;

これでNumber2に0が入った場合はエラーと表示されるでしょう!

3. 動作確認

それでは動かしていきましょう!

f:id:mtnanao:20200222123403p:plain:w200
f:id:mtnanao:20200222123420p:plain:w200
f:id:mtnanao:20200222123432p:plain:w200
f:id:mtnanao:20200222123445p:plain:w200
f:id:mtnanao:20200222123456p:plain:w200

四則演算の少数対応と、0で割ったときのエラー表示が出来ました。


それでは今回はここまでです!
次回は電卓のレイアウトを作っていきます!

お疲れさまでした!!