Javaの簡単な計算機(Stackマシン編)

中置記法で書かれた計算式の計算をめざして書きます(原則計算の優先度を()で入力してもらう)

コードを書く前に計算機の仕事の流れを考えます.

1.中置記法で入力してもらう
2.中置記法を後置記法に直す //stackマシンは後置記法の命令を受け取るとする
3.後置記法をstackマシンが理解できる命令列に直す
4.計算
5.表示

仕事を分けた後はこれらをもとにclassを作ります

/***ここまでが多分一般的なコードを書く準備でここからが本題***/

正直よくわからないので適当に書きます

Stringの命令列が入ると計算を行うStackマシンを書きます
(stack自体はjavaで用意されているものを使用するのでとても簡単)

//命令列を受け取り数値をstackにpush,他なら各種操作

//stackの定義
Deque<Double> stack = new ArrayDeque<Double>();
	if(order.equals("push")){  //数値をpush
                }else{
	                if(order.equals("add")){  //加算
	                }else if(order.equals("sub")){  //減算
	                }else if(order.equals("mul")){  //乗算
	                }else if(order.equals("div")){  //除算
	                }else if(order.equals("wrt")){  //結果の表示
	                }else if(order.equals("halt")){  //終了命令
	        }
        }

ここで各計算の実行時にstackから数値を2つpopして行いますが、後に入れたものからpopされるのでどちらが先かに注意してください

とりあえずこれで計算と表示部分(仕事4,5)はこれで完成

ね、簡単でしょ?
※例外処理(0で割るなど)とかは頑張って

word
中置記法:「1+2」のような一般的な書き方
後置記法:「1 2 +」のような数値→演算子のような書き方
stack: データ構造の一つでデータを後に入れたものを先に取り出すような形(円筒を考えて上からものを入れていき上から取り出すようなイメージ)