2011-01-10 6 views
2

私のメソッドをvoidに変更しようとしました。しかし、私はそれを変更するたびに、常に本の名前とエラーメッセージを出力します。私のメソッドをvoidに変更するにはどうすればよいですか?値を返さずにjava arraylistを検索する

public int displayBookDetails(String bookName) { 
    for (int i = 0; i < classrooms.size(); i++) { 
    Library library = librarys.get(i); 
    if (library.returnBookName().equals(bookName)) { 
     System.out.println("Index: " + i); 
     System.out.println(library.returnBookName()); 
     System.out.println(library.authorName());   
     return i; 
    } 
    } 
    return -1; 
    System.out.println ("Book name is not valid"); 
} 
+3

コードはコンパイルされません。メソッドの中に 'return'の後にステートメントを入れてはいけません。あなたは何をしたいですか?メソッドシグネチャの戻り値の型を 'void'に変更しますか?それでは 'return'を使わないでください。 – sleske

+0

または、System.out.println()メソッドを意味しますか? – Tobias

答えて

2

return文を削除する必要があります(最初のものを単純なreturn(パラメータなし)に置き換える必要があります)。

あなたが値なし returnを使用して行うことができ
public void displayBookDetails(String bookName) { 
    for (int i = 0; i < classrooms.size(); i++) { 
    Library library = librarys.get(i); 
    if (library.returnBookName().equals(bookName)) { 
     System.out.println("Index: " + i); 
     System.out.println(library.returnBookName()); 
     System.out.println(library.authorName());   
     //removed return i; 
     return; 
    } 
    } 

    // removed return -1; 
    System.out.println ("Book name is not valid"); 
} 
+0

これは、記載されたOPのような本の名前と警告を印刷します。 – rsp

+0

@rsp:opps、 - 修正済 – Ralph

0

System.out.println(library.authorName());   
    return; 
} 
1

このような何かを試してみて、私はそれが動作すると確信しています:

public void displayBookDetails(String bookName) { 
    for (int i = 0; i < classrooms.size(); i++) { 
    Library library = librarys.get(i); 
    if (library.returnBookName().equals(bookName)) { 
     System.out.println("Index: " + i); 
     System.out.println(library.returnBookName()); 
     System.out.println(library.authorName());   
     return; // modified here 
    } 
    } 
    // modified here 
    System.out.println ("Book name is not valid"); 
} 
1

あなたはおそらくまだ返すようにしたいですあなたがこの本を見つけたら、それはあなたが以前見逃していたものかもしれません:

public void displayBookDetails(String bookName) { 
    for (int i = 0; i < classrooms.size(); i++) { 
    Library library = librarys.get(i); 
    if (library.returnBookName().equals(bookName)) { 
     System.out.println("Index: " + i); 
     System.out.println(library.returnBookName()); 
     System.out.println(library.authorName());   
     return; 
    } 
    } 
    System.out.println ("Book name is not valid"); 
} 

個人的に私はおそらく、「表示」から「検索」を出し分けるだろう:

public Library getBookDetails(String bookName) { 
    for (int i = 0; i < classrooms.size(); i++) { 
    Library library = librarys.get(i); 
    if (library.returnBookName().equals(bookName)) { 
     return library; 
    } 
    } 
    return null; 
} 

public void displayBookDetails(String bookName) { 
    Library bookDetails = getBookDetails(bookName); 
    if (bookDetails == null) { 
    System.out.println ("Book name is not valid"); 
    } else { 
    System.out.println(bookDetails.returnBookName()); 
    System.out.println(bookDetails.authorName());   
    } 
} 

(もちろん、この時点では「インデックス」のようなものは、ありませんので注意してください。

0

voidに変更しようとしている戻り値の型は、メソッドによって返されるものだけを示します。しかしながら、この方法はI/Oのような異なる副作用を有する可能性がある。コンソールに印刷します。残念ながら、JavaまたはほとんどのOOPランゲージの副作用を制限する方法はありません。関数型プログラミングは、関数内のすべての副作用を取り除くことを目的としているので、プログラムの方が簡単に推論することができます。