Возникли проблемы при использовании логического метода в операторе if

1

Я хочу использовать метод isLong() из класса Book и использовать его в displayLongBooks(), который находится в методе BookCollection. Класс BookCollection имеет переменную bookList. Переменный bookList имеет тип ArrayList и содержит коллекцию всех книг. Все объекты в ArrayList имеют тип Book.

 import java.util.ArrayList;
    public class BookCollection
    {
   ArrayList<Book> bookList = new ArrayList<Book>();

   public BookCollection(){
   bookList.add(new Book(1001-01-141514, "Letones", "CS", 611));
   bookList.add(new Book(1002-01-141424, "Lewis", "CS", 477));
   bookList.add(new Book(1003-01-141434, "Smith", "MATH", 698));
   bookList.add(new Book(1004-01-141444, "Smith", "CS", 617));
   bookList.add(new Book(1005-01-141454, "Brown", "CHEM", 326));
   bookList.add(new Book(1006-01-141464, "Smith", "BIO", 127));
   bookList.add(new Book(1007-01-141474, "Sanket", "CS", 998));
 }
 public String toString()
 {

 }
 public void displayLongBooks()
 {
     System.out.println();
     System.out.println("LONG BOOKS");
     if (isLong() == true)
     System.out.println(bookList);
 }
 public void displayBooksFromAuthor(String author)
 {

 }
 public void displayBooksFromArea(String area)
 {

 }
 public void displayAverageLength()
 {

 }
}




import java.util.*;
import java.io.*;
public class Book
{
    String author;
    String area;
    int isbn;
    int pages;

 public Book (int isbn, String author, String area, int pages)
   {
      this.isbn = isbn;
      this.author = author;
      this.area = area;
      this.pages = pages;     
   }
 public boolean isLong()
   {
     if(pages>600)
     return true;
     else
     return false;
   }
 public String toString()
 {
     return "ISBN: " + this.isbn + "Author: " + this.author
            + "Subject: " + this.area + "Pages: " + this.pages;
 } 
 /**PrintWriter outfile = new PrintWriter (new FileWriter("books.txt"));
 outfile.write("100101141514, Letones, CS, 611");
 outfile.write(100201141424, Lewis, CS, 477);
 outfile.write(100301141434, Smith, MATH, 698);
 outfile.write(100401141444, Smith, CS, 617);
 outfile.write(100501141454, Brown, CHEM, 326);
 outfile.write(100601141464, Smith, BIO, 127);
 outfile.write(100701141474, Sanket, CS, 998);
 outfile.close();**/
}
  • 0
    if (isLong() == true) - Нет. Просто if (isLong()) . И пока мы на этом, отступ в System.out.println(bookList); ,
  • 3
    Аналогично, isLong() должен просто return pages > 600; который уже является логическим (истина или ложь).
Показать ещё 5 комментариев
Теги:

1 ответ

2
Лучший ответ

Похоже, вам нужно перебирать bookList для Book и вызывать Book.isLong() для каждого из них. Использование цикла for-each который может выглядеть примерно так:

public void displayLongBooks()
{
  System.out.println();
  System.out.println("LONG BOOKS");
  for (Book b : bookList) { // <-- for each Book b in bookList
    if (b.isLong()) { // no need for == true
      System.out.println(b); // <-- b, not bookList
    }
  }
}
  • 0
    Привет, спасибо, Эллиотт. У меня есть еще один вопрос. Вы знаете, как я могу вводить книги в файл? В нижней части кода у меня есть переменная outfile, которая должна записывать каждую книгу в файл books.txt, но я получаю ожидаемую ошибку <identifier>.
  • 0
    @Matt Это не в методе.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню