2017-12-01 7 views
0

私はユーザーにいくつかの質問をし、その答えをブール値、真または偽として保存しています。その後、私のブール変数に異なる値を割り当てるためにswitch文を使用してスイッチ文でJAVAブール変数が変更されない

boolean isWindow = false; 

:私の方法の初めに、私は私の変数を宣言してい

 answer = INPUT.next().toUpperCase(); 
     switch (answer) { 
     case "Y" : isWindow = true; 
     case "N" : isWindow = false; 
     } 

は、私が「システムを使用しました。真の 『それはとして表示する『』false」を、私はそれを割り当てようとしました後に私の変数の値を表示する』 out.printlnを:

 System.out.println("Window: " + isWindow); 

すべてのヘルプは、おかげでいただければ幸いです。

+1

ここで、breakキーワードの大文字小文字の区別は "Y"です。isWindow = true;ブレーク; –

+0

すべてのコンパイラの警告を有効にして対処してください。コンパイラーは、あなたがフォールスルーケースのステートメントを持っていることを警告していました。 – VGR

答えて

7

フォールスルー。

あなたはケースを壊すのを忘れました。

case "Y" : isWindow = true;break; 

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

関心のもう一つのポイントは、break文です。各break文は、囲みswitch文を終了します。制御フローは、スイッチブロックの後の最初の文で継続されます。ブレークステートメントがなければ、スイッチブロック内のステートメントになります。ブレイクステートメントに遭遇するまで、後続のケースラベルの式に関係なく、一致するケースラベルの後のすべてのステートメントが順番に実行されます。

(他の例を想定していないを)スイッチを避けるために、まったく新しい発想

boolean isWindow = INPUT.next().toUpperCase().equals("Y"); 
2

オペレーターbreakを追加していません。 switchブロックに関するドキュメントをご覧ください。

1

事はブールが変更であるということです。しかし、その変更の後すぐに、他の値をそのisWindowブール変数に割り当てます。そのような状況を避けるには、switchステートメントで次のケースの実行を残す場合は、ケースの最後にbreak;を置く必要があります。

0

あなたの場合にのみ休憩を追加する必要があります。 ブレークキーワードを追加しなかった場合は、大文字小文字の後にすべての大文字小文字が適用され、改行またはスイッチブロックの終了が検出されたときにのみ停止します。

関連する問題