我編寫了計算器的代碼,但不考慮操作的優先級。我需要改變什麼?該程序不需要支持()
。 當您運行它時,您應該輸入一個數字,然後輸入一個符號並繼續讀取數字和符號,直到用戶輸入爲=
。尊重操作優先級的簡單計算器
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a,c ;
char sgn;
c = sc.nextInt();
do{
sgn = sc.next().charAt(0);
if (sgn=='=') break;
a = sc.nextInt();
switch (sgn) {
case '+' : c += a; break;
case '-' : c -= a; break;
case '*' : c *= a; break;
case '/' : c /= a; break;
}
}while(sgn!='=');
System.out.println(c);
}
}
有很多方法可以做到這一點。一個簡單的方法是將您的中綴表達式轉換爲後綴,然後使用堆棧來計算結果。 – 2014-12-13 11:49:37
您需要......實現運算符優先級的邏輯,這對於SO來說是一個太廣泛的問題。提示:由於諸如「4 + 3 * 2」這樣的事情,你不能在沒有存儲輸入的情況下對標準中綴表達式進行分析,然後再進行分析。 – 2014-12-13 11:49:48
@ AlexisC.question改變了,我希望現在很容易理解我想問什麼 – Andrew 2016-12-03 18:20:25