思路分析:
**實現:
packagestack;
public
class
calculator
else
}else
}else
else
} }
//讓index+1,並判斷是否掃瞄到expression最後
index++;
if(index>=expression.length())
}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
//增加乙個方法,可以返回當前棧頂的值但是不pop
public
intpeek()
//棧滿
public
boolean
isfull()
//棧空
public
boolean
isempty()
//入棧
public
void push (int
value)
top++;
stack[top]=value;
}//出棧
public
intpop()
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;}}
棧實現綜合計算器
package com.dai.stack public class calculator else else else else index 1 是否掃瞄到最後 index if index expression.length while true num1 numstack.pop num2 n...
棧實現綜合計算器(中綴)
思路分析 對於乙個表示式,有數字,有符號,因此我們需要建立兩個棧。乙個數棧 用於存放數字 乙個符號棧 用於存放符號。1.通過乙個index值 索引 來遍歷我們的表示式。2.如果我們發現是乙個數字,就直接入數棧。3.如果發現掃瞄到是乙個符號,就分如下情況 3.1如果發現當前的符號棧為空,就直接入棧 3...
棧實現綜合計算
主函式測試 public static void main string args else else else else index if index expression.length 表示式掃瞄完畢,就順序的從數棧和符號棧中pop出相應的數和符號,並執行 while true num1 num...