2017-08-09 30 views
-4

我找不出爲什麼我的代碼不工作。Java:如果語句不等於打破程序

它似乎是突破如果不等於是或否的區域。

這裏是我的代碼:

public static void main(String[] args) { 
    // TODO code application logic here 

    Scanner user_input = new Scanner(System.in); 

    String name; 
    System.out.println("Hello, what is your name?"); 
    name = user_input.next(); 

    System.out.println(""); 

    String name_answer; 
    System.out.println("Your name is " + name + ". Is this correct? (yes/no)"); 
    name_answer = user_input.next(); 

    System.out.println(""); 

    if (!name_answer.equals("yes" + "no")) { 
     System.out.println("Answer not valid. Please input again."); 
     name_answer = user_input.next(); 
     while (!name_answer.equals("yes" + "no")) { 
      System.out.println("Answer not valid. Please input again."); 
      name_answer = user_input.next(); } } 

    if (name_answer.equals("yes")) { 
     System.out.println("Thank you, " + name + ". Please proceed to the next question."); 
    } else if (name_answer.equals("no")) { 
     System.out.println("Please reinput your name correctly."); 
     while (name_answer.equals("no")) { 
      String name_again; 
      System.out.println(""); 
      System.out.println("What is your correct name?"); 
      name_again = user_input.next(); 

      System.out.println(""); 

      System.out.println("Your name is " + name_again + ". Is this correct? (yes/no)"); 
      name_answer = user_input.next(); } 

如果我註釋掉不-等於碼(顯示在下面)塊,程序工作。但是,在代碼塊中,程序中斷。

if (!name_answer.equals("yes" + "no")) { 
     System.out.println("Answer not valid. Please input again."); 
     name_answer = user_input.next(); 
     while (!name_answer.equals("yes" + "no")) { 
      System.out.println("Answer not valid. Please input again."); 
      name_answer = user_input.next(); } } 

我的目標是有不等於「是」或「否」來reinputted任何回答,而一個「是」或「否」帶來的節目又邁進了一步。謝謝您的幫助。

+6

你覺得呢'「是」 +「不」'手段?你認爲「休息」是什麼意思? – shmosel

+0

從本質上講,你的代碼要求你的**如果**和** while循環條件檢查是:如果字符串變量名稱*** name_answer ***不等於「yesno」。我不相信這是你的意圖。閱讀[Logical AND](https://www.javatpoint.com/operators-in-java)操作符,您也可以從閱讀[String.equalsIgnoreCase()](https://www.tutorialspoint .com/java/java_string_equalsignorecase.htm)方法。 – DevilsHnd

+0

如果有人輸入「否」,然後在你問他們時輸入亂碼,該怎麼辦?你爲什麼在你的while循環的第一次迭代之外硬編碼? – Dukeling

回答

2

您的代碼的技術問題是您使用連接而不是邏輯運算符。 "yes" + "no"的計算結果爲"yesno",這可能永遠不會與您的輸入字符串匹配。

更重要的是,問題在於您試圖將兩個布爾值評估綁定爲一個。從邏輯上說,如果答案不是「是」,您想繼續。答案不是「否」。在Java語法:

if (!name_answer.equals("yes") && !name_answer.equals("no")) { 

如果你想同時測試多個值,可以使用此快捷方式:

if (!Arrays.asList("yes", "no", "foo", "bar").contains(name_answer)) { 
+1

代碼的整個流程可以通過重新訪問我認爲 –