2014-06-26 45 views
0

我正在編寫一份調查問卷,在某個部分之後,程序詢問「是否完成?」它應該是一個是或否的答案。所以我編碼這些條件,但得到「不兼容的類型」的錯誤信息。與掃描條件有關的問題

System.out.println("Is that complete?"); 
String answer = sc.nextLine(); 
if(answer="no") 
{ 
    System.out.println("Continue:"); 
    Continued = sc.nextLine(); 
    if(answer="yes") 
    { 
     System.out.println("Okay."); 
     if(answer != "yes" || "no") 
     System.out.println("That is not a valid input."); 
     isThatComplete(); 
    } 
} 

謝謝!

+0

**爲什麼**你是這樣寫的? –

+1

雖然我聽說在Java中你應該使用'.equals',但你忘記'=='(比較)作爲'='(賦值)。此外,'答案!=「是」|| 「否」不起作用。 '||'是一個像任何其他的操作符;你需要給它適當的操作數,即'!(answer.equals(「yes」)|| answer.equals(「no」))''。 – Ryan

回答

0

if (answer != "yes" || "no")

||操作符與布爾值,但您提供一個布爾值和一個字符串,因爲它解析爲

(answer != "yes") || "no") 

寫一個正確的方式,將

if (!answer.equals("yes") && !answer.equals("no")) 

或根據德摩根法律:

if (!(answer.equals("yes") || answer.equals("no")) 

請注意,我使用equals(..)而不是==,因爲不應使用==來檢查對象之間的相等性,==僅檢查引用。

0

以下行不正確。當你給它一個字符串時,它期望布爾值。

if(answer="no")

您應該使用==而不是=。無論如何,一個更好的方式來做到這一點是:

if("no".equals(answer))

嘗試同樣的事情,如果檢查。

順便說一句 - 你的代碼看起來非常糟糕。我不確定你在這裏做什麼:if(answer != "yes" || "no")