2016-06-30 7 views
-3

私はJava初心者です。私はswitch文について学んでいます。私はswitch文がどのように動作するのか理解していますが、switchからif/elseに変換しようとすると間違った答えが出ます。そして、私は問題を得ることができませんでしたか?elseとswitch statement

これは、あなたが他の最後を忘れてしまった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 (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

どのような型ですか?文字列? int? – Lexi

+2

あなたは間違った答えを持っていますか?どういう意味ですか?それはコンパイルされません、それは実行されません、またはあなたの教授はあなたに再度試して言った...?あなたの 'switch'ステートメントは' default'を持っていますが、 'if'は' else'を欠いているようです。あなたはスイッチの ' - 'と比較していますが、それはifの '_ 'に入力されたようです。 – trooper

+0

あなたのケースステートメントのいくつかにブレークがないのはなぜですか?それぞれのケースには休憩が必要です。また、最後のelse if文はおそらくelse文でなければなりません。else文は、その前のすべての文がfalseの場合に実行されます。 – 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; 
} 

EDIT

と文字列は、これはおそらく、あなたの誤りである

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

を比較するために、String.equalsを使用する場合は、マイナス記号

+0

答えを出すだけなら、少なくともその理由を説明してください。 –

+0

私はそれを指しても、デフォルトオプションとの違いはあまりにも明白だと思った。 – Turo

+0

@Turo合意。バグは説明が簡単ではなく、説明しようとするとコントロールステートメントの一般的な機能についてしか説明できないほどです。 – nasukkin

-3

でタイプミス(イーグルアイミックニーモニックで)言及をしました。あなたがintまたはcharを使用していないと仮定すると...データ型を知っていれば助けます

+1

は問題ではありません。それらの一重引用符は、yが 'char'であることを意味します。 http://stackoverflow.com/questions/439485/is-there-a-difference-between-single-and-double-quotes-in-java – trooper

+0

私は彼がスイッチで使用して以来、気づいた...しかし、どのようなデータ型であるか知っていますか?最初にStringを指定したとしたら... –

+0

'switch(y)'または 'if(y == '+')'の 'y'がStringの場合、OP wouldn 'case '+''や '== '+''をコンパイルすることはできません。それは 'char'(またはCharacter、またはcharにキャスト可能な他の数値型)でなければなりませんが、Stringにすることはできませんので、私はそれについての回答を投稿する際には何のポイントも見ません。 – Pshemo

関連する問題