2016-05-18 189 views
1

我沒有編程,我試圖回到事物的擺動,這是我得到了多少。我的問題是,我如何循環第二個問題,以便如果答案除了是或否,則再次提出問題。我曾試着圍繞if語句進行循環,但每當我嘗試獲得用戶的另一個響應時,它都會告訴我不能使用變量響應來這樣做。我覺得這對於我理解循環來說是一個簡單的解決方案,但是我很難在這個特定的問題上進行包裝,感謝您的提前。Java中的循環邏輯

import java.util.Scanner; 
public class Practice { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     System.out.println("Welcome to my simulation, please enter your name"); 
     String name = input.nextLine(); 
     System.out.println("Welcome " + name + " would you like to play a game?"); 
     String response = input.nextLine(); 


     boolean yes = new String("yes").equals(response.toLowerCase()); 
     boolean no = new String("no").equals(response.toLowerCase()); 


     if (yes){ 
      System.out.println("Which game woudl you like to play?"); 
     }else if (no){ 
      System.out.println("Fine then, have a good day!"); 
     } 
     else{ 
      System.out.println("please enter either yes or no"); 
     } 
    } 

} 
+2

請勿使用'new String(「yes」)'。 '「是」'會做得很好。 – shmosel

+1

東西的「擺動」..呃.. – Eric

+0

@Eric但是......在這個問題上沒有Swing。 – shmosel

回答

5

有很多方法可以做到這一點。下面是浮現在腦海的第一個:

while (true) { 
    response = input.nextLine().toLowerCase(); 
    if (response.equals("yes") { 
     System.out.println("Which game woudl you like to play?"); 
     break; 
    } else if (response.equals("no") { 
     System.out.println("Fine then, have a good day!"); 
     break; 
    } else { 
     System.out.println("please enter either yes or no"); 
    } 
} 
+0

我也必須在循環中引入布爾語句,但在此之後它就像魅力一樣工作。非常感謝! –

-1

如何

do{ 
    String response = input.nextLine(); 
    boolean yes = new String("yes").equals(response.toLowerCase()); 
    boolean no = new String("no").equals(response.toLowerCase()); 
    if (yes){ 
     System.out.println("Which game woudl you like to play?"); 
    }else if (no){ 
     System.out.println("Fine then, have a good day!"); 
    } 
    else{ 
     System.out.println("please enter either yes or no"); 
    } 
}while(!response.equals("yes") && !response.equals("no")); 
+0

我很想知道爲什麼我得到一個downvote –

+2

我沒有downvote。但是你的代碼會循環一次或無限次,因爲響應永遠不會改變它。 –

+0

@ 911didbush好抓! –

-4
while(response =! yes || response || no) 

這應該幫助!

+0

http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java – sinclair

+0

'=!'不是我知道的任何語言的有效運算符。此外,這似乎是其他方面令人難以置信的,極好的,迷人的錯誤。在回答關於它的任何其他問題之前,我建議閱讀[關於Java的這個基本教程](https://docs.oracle.com/javase/tutorial/getStarted/application/index.html)。 –

0

首先,使其更容易對自己,你並不需要使用boolean變量。您可以簡單地使用.equals()方法來測試響應是否等於是或否。在這種情況下,如果else語句如下所示,將更容易使用:

if (response.equals("Yes")) 
{ 
    System.out.println("Which game woudl you like to play?"); 
} 

else if (response.equals("No")) 
{  
    System.out.println("Fine then, have a good day!"); 
} 

else if (!response.equals("Yes") && !response.equals("No")) 
{ 
    while (!response.equals("Yes") && !response.equals("No")) 
    { 
     System.out.println("please enter either yes or no"); 
     response = input.nextLine(); 
    } 
} 

希望這對您有所幫助。

+0

我知道,我只是在練習使用我的布爾人,因爲在我發現以這種方式使用它們之前,我不知道你可以這樣做。 –

+1

我明白了。有很多方法可以完成。這裏有一個世界。正如我在過去一年左右發現的那樣,練習真的很好 –