棧實現綜合計算器

2022-07-29 13:15:13 字數 1491 閱讀 7671

思路分析:

**實現:

package

stack;

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...