2013-02-28 52 views
1

我正在從Object的練習中首先用java進行自我檢查。我遇到麻煩的那部分練習是它要求我查找refNumber字符串的長度..如果字符串的長度爲零,則打印出一行說「zzz」的行。我已經嘗試通過使一個局部變量,並使其等於refNumber.length()。但是,在我的條件聲明中,bluejay表明我有一個不兼容的類型。呃,請幫忙。提前致謝。使用.length方法時出現不兼容的類型

class Book 
{ 
// The fields. 
private String author; 
private String title; 
private int pages; 
private String refNumber; 

/** 
* Set the author and title fields when this object 
* is constructed. 
*/ 
public Book(String bookAuthor, String bookTitle, int numberOfPages) 
{ 
    author = bookAuthor; 
    title = bookTitle; 
    numberOfPages = pages; 
    refNumber = ""; 
} 

public String getAuthor() 
{ 
    return author; 
} 

public String getTitle() 
{ 
    return title; 
} 

public int getPages() 
{ 
    return pages; 
} 

public String getRefNumber() 
{ 
    return refNumber; 
} 

public void setRefNumber(String ref){ 
    ref = refNumber; 
} 

public void printTitle() { 
    System.out.println("Book desciption: " + title); 

} 

public void printAuthor() { 
    System.out.print(" by " + author); 

} 

public void printPages(){ 
    System.out.println("Pages: " + pages); 
} 

public void printRef(){ 
    int count = refNumber.length(); 
    if (count = 0){      //incompatible type wtf? 
    System.out.println("zzz"); 
    } 
    else { 
     System.out.println("Reference Number: " + referenceNumber); 
    } 

} 
+0

你不覺得你應該在'if'語句中比較'=='嗎? – 2013-02-28 06:50:04

+0

謝謝你們的幫助,現在很清楚。 – 2013-02-28 06:55:28

回答

0

使用此:

if (count == 0){ 
    .... 
} 

'=' 是賦值運算符和 '==' 是比較運算

0

應該

if(count == 0) 

在你的代碼,它就像您將分配0來計算哪些不會發生在if子句中,因爲它期望基於條件的布爾值。所以在這裏你應該檢查count是否等於(使用相等運算符==),並且如果它們相等或否則返回true。

1

嘗試..get出來放

if (refNumber.length() == 0){       
    System.out.println("zzz"); 
    } 
+0

謹慎解釋原因。使用它的錯誤和好處是什麼? – 2013-02-28 06:51:58

+0

@ Harry Joy ==對他有用 – 2013-02-28 06:53:33

+1

是的,我知道。但爲什麼它的有用?在你的答案中解釋它。不要只是粘貼代碼,添加一些關於爲什麼以及如何使用代碼的解釋。 – 2013-02-28 06:54:49

2

大多數編程語言使用單等號=是賦值運算符。你試圖做的是比較這兩個數字,它使用雙等號==

因此,您的代碼實際上試圖將值分配給值0,然後檢查值是否爲truefalse。由於賦值操作的結果既不是true也不是false,它會引發錯誤。

正如其他人所說,使用count == 0

0

count=0代表轉讓,而count==0代表比較。