2

メソッドを無効に変更しようとしています。しかし、それを変更するたびに、常にブック名とエラー メッセージが出力されます。メソッドを void に変更するにはどうすればよいですか?

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"); 
}
4

5 に答える 5

2

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"); 
}
于 2011-01-10T11:25:24.083 に答える
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"); 
}
于 2011-01-10T11:27:21.490 に答える
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());           
  }
}

(もちろん、この時点では「インデックス」のようなものはないことに注意してください。本当にそれも表示する必要がある場合は、その一部である必要がありLibraryます。)

于 2011-01-10T11:27:29.737 に答える
0

return値なしで使用することでこれを行うことができます。

    System.out.println(library.authorName());           
    return;
}
于 2011-01-10T11:26:54.093 に答える
0

void に変更しようとしている戻り値の型は、メソッドによって返されるもののみを意味します。ただし、メソッドには、コンソールへの出力など、I/O などのさまざまな副作用がある場合があります。残念ながら、Java やほとんどの OOP 言語で副作用を制限する方法はありません。関数型プログラミングは、関数内のすべての副作用を取り除くことを目的としているため、プログラムについてより簡単に推論できます。

于 2011-01-10T11:30:29.243 に答える