2014-11-22 2 views
1

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

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

'если (isLong() == TRUE)' - Нет, просто 'если (isLong())'. И пока мы находимся в этом, отступы ошибочны в 'System.out.println (bookList);'. – JensG

+3

Аналогично, 'isLong()' должен просто возвращать страницы> 600; 'который уже является логическим (либо истинным, либо ложным). – Piovezan

+4

Если 'isLong()' - это метод, определенный в 'Book', вам нужно вызвать его на экземпляр' Book', например. 'Book.isLong()'. – khelwood

ответ

2

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

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, но я получаю ошибку . – Matt

+0

@Matt Это не метод. –

+0

Я не совсем понимаю, о чем вы говорите. – Matt

Смежные вопросы