2016-06-30 80 views
-3

我是java初學者,我正在學習switch語句。我理解switch語句是如何工作的,但是當我嘗試從switch切換到if/else時,我得到了錯誤的答案。我無法解決問題?If else and switch statment

這是switch敘述

switch (y) 
{ 
    case '+': 
    case '-': 
     checkPrecedence(y, 1); 
     break; 
    case '*': 
    case '/': 
     checkPrecedence(y, 2); 
     break; 
    case '(': 
     opStack.push(y); 
     break; 
    case ')': 
     checkBrackets(); 
     break; 
    default: 
     output = output + y; 
     break; 

我的if/else statment

if (y == '+' || y == '_') { 
    checkPrecedence(y, 1); 
} 
else if (y == '*' || y == '/') { 
    checkPrecedence(y, 2); 
} 
else if (y == '(') { 
    opStack.push(y); 
} 
else if (y == ')') { 
    checkBrackets(); 
} 
output = output + y; 
+0

y是什麼類型?串?詮釋? – Lexi

+2

你得到了錯誤的答案?那是什麼意思?它不會編譯,它不運行,或者你的教授告訴你再試一次......?對於初學者來說,你的'switch'語句有一個'default',但你的'if'似乎缺少了'else'。你也在比較交換機中的'-',但是如果你似乎在'_'中拼寫錯誤。 – trooper

+0

爲什麼你的一些案例陳述沒有中斷?每個案件都應該休息一下;另外你的最後一個if語句可能應該是一個else語句,如果它之前的所有語句都是假的,那麼它將被執行。 – Radmation

回答

2

你忘了還有最後:

if(y=='+'||y=='-'){ 
    checkPrecedence(y,1); 
    } 
else if(y=='*'||y=='/'){ 
    checkPrecedence(y,2); 
} 
else if(y=='('){ 
    opStack.push(y); 
    } 
else if(y==')'){ 
    checkBrackets(); 
} else { 
    output=output+y; 
} 

編輯

並取得提到的(通過鷹眼米克助記符)與減號

+0

如果你打算給他們答案,請至少解釋爲什麼是這樣。 –

+0

我認爲與默認選項的區別太明顯了,如果我指向 – Turo

+0

@Turo同意。這個錯誤太簡單了,無法解釋,如果你試圖解釋它,你最終只能解釋控制語句的一般功能。 – nasukkin

-3

錯字如果字符串中使用String.equals比較

if(y.equals("+") || y.equals("_")) { 
    checkPrecedence(y,1); 
} 

這可能是你的錯誤。假設你沒有使用int或是...的字符將幫助,如果我們知道數據類型

+1

不太可能成爲問題。這些單引號暗示y是一個「char」。 http://stackoverflow.com/questions/439485/is-there-a-difference-between-single-and-double-quotes-in-java – trooper

+0

我注意到,因爲他用在一個開關......但很高興知道數據類型是什麼..請注意我是如何說If If String ... –

+0

如果'switch(y)'或'if(y =='+')'中的'y'是String,那麼OP wouldn '不能編譯'case'+''也不能'=='+''。它必須是'char'(或字符,或其他可以轉換爲字符的數字類型),但因爲它不能是字符串,所以在發佈有關它的答案時沒有看到任何意見。 – Pshemo