こんにちは,さかなです.

 

前回は四則演算記号が押された時に値を保存できるようになるまでをやりました.

 

今回はそこから,計算して,答えが画面に表示されるまでです.

 

 

まずは,フィールド部分です.

新たにInteger型のArrayList,numerPreservationとtrueValueを新たに宣言しました.

 

numberPreservationはnumberから記号部分だけを読み取って,格納するための可変長配列です.

trueValueはnumberから数字部分だけを読み取って,格納するための可変長配列です.

 

 

数字ボタンが押された時の処理は前回と変わっていません.

 

 

次に,記号部分が押された時の処理です.

記号が押されると記号を表す2桁の数字がnumberに格納されるようにしています.(”+”だと10,”-”だと11,”×”だと12,”÷”だと13という数字が格納されます.)

 

また,関数の引数も前回と少し変わっています.(スッキリさせただけですが)

関数の中身に関しては後で述べます.

 

 

イコールが押された時の処理です.

ここにも記号部分と同様,関数valuePreservationを呼び出しています.

その後,新しく作成した関数calculationを呼び出し,計算をさせ,その結果をtextViewに表示させています.

こちらも関数部分は後で述べます.

 

 

まずは記号,イコールボタンが押された時に値を保存するメソッドです.

不要な部分を削除しました.この関数の変更はそれだけです

 

 

次にイコールボタンが押された時の関数です.int型を返り値にしています.

少し長いので画像は2つに分けています.

 

ここではまず,int型変数answerを初期値trueValue.get(0)で宣言しています.

その後,繰り返し処理でこれまでに入力された記号を表す数値のみをnumberから取り出し,numberPreservationに格納しています.

あとは確認用のSystem.outを記述しています.

 

 

イコールボタンが押された時の関数その2です.

 

ここでも繰り返し処理をしています.

ここではnumberPreservationの数字を判別し,その数字によってanswerにtrueValueの値を加減乗除しています.

 

この方法の場合,イコールの直前の数字の計算だけ特殊なので,ifで場合分けをしています.

 

以下がタブレットでの実行画面です.

 

 

このようにちゃんと計算され,答えが表示されています.

ただ,入力された数字を左から順に計算させる方法なので,四則演算の法則には沿っていません.

 

一応,計算結果が表示されるところまで行ったので,計算機アプリver1.0はここまでとします.

次回以降はver2.0として引き続き機能の拡張等を行っていきたいと思います.

 

【ver2で実装したいこと】

・四則演算の法則に沿った計算

・小数点対応

・一文字削除ボタン

・割り算の際,0で割れないようにする

・割り算の余りの計算

・π

・√

・階上

 

【ver3以降実装したいこと】

・三角関数

・指数,対数関数

・微分,積分