主要是通過定義乙個數棧和乙個符號棧,並根據給出的計算式進行拆分,迴圈判斷是數字還是符號,考慮數字的連續性和符號計算的優先順序,具體實現如下:
package com.pangzi.stucture;
public class calculator else
}else
}elseelse}}
//讓index+1,看是否掃瞄到最後乙個字元
index++;
if(index >= expression.length())
}//當expression掃瞄完畢後,就依次從數棧和符號棧中彈出進行運算。
while(true)
num1 = numstack.pop();
num2 = numstack.pop();
oper = operstack.pop();
res = numstack.cal(num1, num2, oper);
numstack.push(res);//入棧
}system.out.printf("表示式%s = %d",expression,numstack.pop());//將最後的結果列印出來}}
//定義乙個表示棧的類
class arraystack2
//獲得棧頂的值
public int peek()
//判斷棧是否滿了
public boolean isfull()
//判斷棧是否空
public boolean isempty()
//入棧 push
public void push(int value)
top++;
stack[top] = value;//將新入棧的資料放入陣列
}//出棧 pop
public int pop()
int value = stack[top];//獲取彈棧的值
top--;
return value;//返回彈棧的值
}//顯示棧的情況,遍歷時需要從棧頂往下走
public void list()
for(int i = top;i>=0;i--)
}//返回運算子的優先順序,優先順序人為來確定的,優先順序用數字表示,數字越大優先順序越高
public int priority(int oper)else if(oper == '+' || oper == '-')else
}//判斷是否是乙個運算子
public boolean isoper(char val)
//計算方法
public int cal(int num1,int num2,int oper)
return res;}}
python 計算器 四則運算
學習來自 感謝!思路 考慮的四則運算符號 獲取表示式字串 表示式切分 請注意區分 減號 與負號 先出初切 formula list i for i in re.split d d formula if i 然後再判定 if re.search final formula 1 其他正常切分就行 ite...
四則運算計算器
今天做個帶視窗的c 四則運算計算器 輸入中綴表示式 自然表示式 可以用list來放 先把它變成字尾表示式 逆波蘭表示式 用乙個棧放運算子,另乙個棧放字尾表示式 運算子優先順序 1 2 3 4 從左到右遍歷中綴表示式 計算字尾表示式 從左到右掃瞄字尾表示式,如果是數字,放入數字棧。如果是符號,從數字棧...
簡單的四則運算計算器
include stdio.h include stdlib.h include string.h define string length 1000 define number length 40 結構體定義 struct symbol symbol head null,temp null str...