2016-12-03 61 views
-3

我正在使用while循環和if語句。獲取while循環以繼續if語句

如果else語句正在運行,我希望循環繼續。在我的理解中「繼續」應該重新啓動循環,但事實並非如此。

我發現一個解決方法來解決這個問題,但它是設置「cho = 1;」。但這真的有必要嗎?有沒有更多的邏輯方法來解決這個問題?

謝謝!

while (sum < 21 && cho == 1 && sum != 21) { 
     System.out.println("Do you want to (1)hit or (2) stay?"); 
     cho = scan.nextInt(); 

     if (cho == 1) { 

      getCard(index++); 

      if (sum > 21) { 
       System.out.println("You busted! Dealer wins."); 
       return; 
      } 
     } else if (cho == 2) { 
      System.out.println("Your value is " + sum); 
      sum = playerTotal; 
     } 
     else{ 
      cho = 1; 
      System.err.println("The input value given is not a valid integer"); 
      continue; //Does not restart the loop. 
     } 
    } 
+1

定義「不起作用」。當你在調試器中完成這一步時,它做了什麼? 「繼續」操作完全按照您所描述的內容進行操作,而且似乎更有可能出現邏輯錯誤,而不是「continue」關鍵字「不起作用」。 – David

+0

'continue'會重複循環,但是如果你的條件改變了,那麼你的循環就會結束。 – Rogue

+0

好的,我明白了,當輸入不等於1或2時,條件會發生變化。我不明白條件仍然必須是真的才能繼續工作,我認爲它做了重寫。謝謝 – Maximus

回答

0

A continue跳回到循環的條件,然後再次評估。如果條件評估爲false,則循環顯然不會再次運行。

所以,如果你想讓你的循環繼續實際循環,你必須確保條件是true

這意味着:必須設置cho = 1,確保sum < 21

另外請注意,在你的狀態sum != 21是不需要的,因爲sum < 21已經消除了這種可能性。

+0

謝謝,這澄清了很多,確實解決了問題!我對編程很陌生,所以請原諒我的僞科學。 – Maximus