在没有返回值的情况下在java arraylist中搜索

时间:2011-01-10 11:23:10

标签: 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)) {
      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"); 
}

5 个答案:

答案 0 :(得分: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"); 
}

答案 1 :(得分: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"); 
}

答案 2 :(得分: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的一部分。)

答案 3 :(得分:0)

您可以使用return而不使用值来执行此操作:

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

答案 4 :(得分:0)

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