Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java arraylist中搜索而不返回值_Java_Search_Arraylist_Void - Fatal编程技术网

在java arraylist中搜索而不返回值

在java arraylist中搜索而不返回值,java,search,arraylist,void,Java,Search,Arraylist,Void,我一直想把我的方法改成无效的。但每当我更改它时,它总是打印出书名和错误消息。如何将我的方法更改为无效 public int displayBookDetails(String bookName) { for (int i = 0; i < classrooms.size(); i++) { Library library = librarys.get(i); if (library.returnBookName().equals(bookName)) { S

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

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"); 
}
public int displayBookDetails(字符串bookName){
对于(int i=0;i
您还需要删除return语句(并用简单的return(无参数)替换第一个语句)

public void displayBookDetails(字符串bookName){
对于(int i=0;i
您可以使用
返回
而不带值:

    System.out.println(library.authorName());           
    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());           
        return; // modified here
    }
  }
  // modified here
  System.out.println ("Book name is not valid"); 
}
public void displayBookDetails(字符串bookName){
对于(int i=0;i
当你找到这本书时,你可能仍然想要归还——这可能是你以前错过的:

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 void displayBookDetails(字符串bookName){
对于(int i=0;i
就我个人而言,我可能会将“搜索”与“显示”分开:

公共图书馆getBookDetails(字符串bookName){ 对于(int i=0;i
(请注意,在这一点上当然没有“索引”这类东西。如果您真的需要显示它,它将需要是
库的一部分)

您试图更改为void的返回类型仅表示该方法返回的内容。但是,该方法可能有不同的副作用,如I/O,例如打印到控制台。不幸的是,在Java或大多数OOP语言中,没有办法限制副作用。函数式编程旨在消除函数中的所有副作用,以便更容易地对程序进行推理。

您的代码不可编译-在
返回后,方法中不得有任何语句。你想完成什么?是否要将方法签名返回类型更改为
void
?那么您不能使用
return
。或者您指的是System.out.println()方法吗?这将像前面提到的OP一样打印书名和警告。
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());           
  }
}