2013-09-23 81 views
1

這裏是我的方法:如果找不到要返回的對象,應該從方法返回什麼?

public Book getBook(String title, String author){ 
    for (int i = 0; i < listOfBooks.size(); i++){ 
     Book book = listOfBooks.get(i); 
     if (book.getTitle() == title && book.getAuthor() == author){ 
      return book; 
     } 
    } 
} 

我應該返回如果這本書沒有在listOfBooks發現了什麼?

+0

返回'null'有什麼問題!!如果找不到書,可以返回null。 – iMBMT

回答

5

返回null(並記錄行爲)是一個合理的明顯選擇。

P.S.使用equals()來比較字符串:

if (book.getTitle().equals(title) && book.getAuthor().equals(author)) { 

P.P.S.寫循環以下方式可以說是更地道,並在某些情況下可能是相當快:

for (Book book : listOfBooks) { 
+0

用於提及字符串比較的+1;非常有幫助。 – Bathsheba

2

你可以簡單地return null;如果圖書未找到或引發自定義Exception像「NotFoundException`。

btw您不能使用==來比較Java中的String。用途:用於

if (book.getTitle().equals(title) && book.getAuthor().equals(author)) 

代替:

if (book.getTitle() == title && book.getAuthor() == author) 
+0

我讀過Effective Java,返回null不是一個好習慣。相反,我們可以返回一個空對象,或拋出異常。 – JNL

+0

它完全依賴於調用者和被調用者之間的契約,但我更喜歡返回一個自定義的'Exception'。 – anubhava

0

我要麼返回null並在您的課程文檔中寫入此行爲,或拋出異常BookNotFoundException

4

要麼返回null或拋出一個異常BookNotFoundException,你已經寫了從java.lang.Exception的

+1

+1,這裏拋出一個異常可以是非常有效的選擇,具體取決於條件是否可恢復。 – vikingsteve

0

繼承你可以返回null地說,你的數據是找不到的。

0

如果在列表中找不到書籍對象,則可以返回null。並使用.equals()方法來比較字符串。

public Book getBook(String title, String author){ 
      Book book =null; 
      for (int i = 0; i < listOfBooks.size(); i++){ 
       book = listOfBooks.get(i); 
       if (book.getTitle().equals(title) && book.getAuthor().equals(author){ 
        return book; 
       } 
      } 
      return book; 
    } 
相關問題