電卓を作ろう【序章】
やっとアプリ開発らしくなってきました。笑
今回は電卓を作り始める前に、前回までの不具合を解消しておきたいと思います!
改善点は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は
発生しなくなりました。
このように計算結果が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. 動作確認
それでは動かしていきましょう!
四則演算の少数対応と、0で割ったときのエラー表示が出来ました。
それでは今回はここまでです!
次回は電卓のレイアウトを作っていきます!
お疲れさまでした!!