2016-11-01 9 views
-5

ユーザーに入力を求めさせてから、すべてのケースのすべてが読み込まれた後に、output.displayMainMenu();に4〜プログラムを終了します。Javaプログラミングではwhileループ文をループすることはできません

output.displayMainMenu(); 
int entry = keyboard.nextInt(); 
while(entry >= 1 || entry <=4) { 
    output.displayMainMenu(); 
    switch(entry) { 
     case 1: 
      output.displayStockChoices(portfolio); 
      portfolio.editPostion(); 
      portfolio.displayPositions(); 
      break; 
     case 2: 
      portfolio.updateCurrentPrice(); 
      break; 
     case 3: 
      System.out.print(investor.toString() + "Account Balance: " +portfolio.calcTotalAccountValue()); 
      break; 
     case 4: 
      System.out.print("Done."); 
      break; 
     default: 
      System.out.print("please enter 1-4!"); 
    } 
    break; 
}  
+0

ループ内では、「エントリ」が決して再割り当てされないので、ここに無限ループがあることを喜んで賭けています。 – Makoto

+2

||論理ORであるため、これらの2つの条件の1つが常に真です。 &&は論理ANDで、あなたが探しているものです。 –

+5

スイッチの外側に 'break;'があります。これはあなたのループから壊れます。しかしwhileループの状態やユーザー入力の取得など、いくつかの問題があります。 – AntonH

答えて

0

ループ内のコードを少なくとも1回実行する必要があるため、do-whileループを使用する方がよいでしょう。私はこのコードのいくつかの問題である@AntonHに同意します。私は上記の問題を考慮して書き直しました。

int entry = 0; 
do { 
    output.displayMainMenu(); 
    try { 
     entry = keyboard.nextInt(); 
    } catch (InputMismatchException e) { 
     System.out.print("Invalid input. "); 
    } 

    switch (entry) { 
     case 1: 
      output.displayStockChoices(portfolio); 
      portfolio.editPosition(); 
      portfolio.displayPositions(); 
      break; 
     case 2: 
      portfolio.updateCurrentPrice(); 
      break; 
     case 3: 
      System.out.print(investor.toString() + "Account Balance: " 
        + portfolio.calcTotalAccountValue()); 
      break; 
     case 4: 
      System.out.print("Done."); 
      break; 
     default: 
      System.out.print("please enter 1-4!"); 
    } 

} while (entry >= 1 && entry < 4); 
// Don't forget to close Scanner object when program finish 
keyboard.close(); 
関連する問題