2

我一直在尝试将我的方法更改为无效。但是每当我更改它时,它总是会打印出书名和错误消息。如何将我的方法更改为无效?

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 回答