2014-04-23 52 views
1

我有這種情況:用戶必須爲'x'輸入一個數字。如果值爲>=0,則使用此座標創建新遊戲。如果用戶輸入負數,則會顯示一條消息,他將有另一次機會,將有三次機會輸入正確的號碼,否則將不會有任何遊戲。我爲這種情況嘗試了一個'if-statement',但它運行不正常。循環內部是否有這樣的方法?需要一個循環來重複3次以處理特殊情況

+5

安置自己嘗試代碼 – newuser

+1

你需要一個變量來跟蹤的多少更多的嘗試則允許用戶。 –

+0

你到目前爲止做了什麼? –

回答

3
final static int NUMBER_OF_TRIES = 3; 
boolean correctNumber = false; 
int attemptNumber = 0; 

while (!correctNumber) 
{ 

    //get user input 

    if (inputIsCorrect) 
    { 
     createANewGame(); 
     correctNumber = true; 
    } 
    else 
    { 
     System.out.println("Incorrect answer"); 
     attemptNumber++; 
    } 

    if(!inputIsCorrect && attemptNumber == NUMBER_OF_TRIES) 
    { 
     System.out.println("You have reached the max number of tries"); 
     System.exit(0); //or whatever you want to happen 
    } 

} 
+0

for循環會更清潔嗎? – DonyorM

+0

也可以使用for循環,但它們本質上看起來是一樣的,唯一的區別是您可以刪除attemptNumber變量,如果輸入正確,則使用break語句。在這種情況下,我個人比較喜歡while循環,因爲它似乎更適合於試圖完成的任務。這真是一個偏好問題。 – yitzih

+0

非常感謝!這對我來說似乎很不錯。唯一不能理解的是:我必須要求用戶輸入'x',以便我聲明,如果答案錯誤,他必須再次輸入。我怎樣才能做到這一點,而無需再次更改變量?因爲它已被定義(int x = keyboard.nextInt(); keyboard.nextLine();)。 – user3563945

0

您可以使用for循環用下面的代碼

for(int x = 0; x < 3; x++) { 
    //Perform logic 
} 

這將正好運行三次。您可以更改3以使其運行次數更多或更少。

+3

你不覺得這會循環4次嗎? –

+0

@FlorescentTicker感謝捕捉那* *羞怯的笑容* – DonyorM

+0

如果您使用x <3它運行3次,幷包括3以顯示它將運行的頻率 – LionC

0
 import java.util.Scanner; 

    boolean isValidInput=false; 
    int counter=0; 

    Scanner sc = new Scanner(System.in); 
    int userInput; 

    while(counter<3 && isValidInput==false) 
    { 
     System.out.println("Enter a value: "); 
      userInput = sc.nextInt(); 

     if(userInput>=0) 
      isValidInput=true; 

     else 
      System.out.println("Please Enter valid input"); 

     counter++; 

    } 
相關問題