Java Objects Array: Как напечатать только первые элементы объектов? - PullRequest
1 голос
/ 22 марта 2020

Я пытаюсь создать программу, которая принимает в качестве пользовательских данных названия книг, количество страниц и год публикации. Когда пользователь ничего не вводит в поле имени, программа должна спросить пользователя, что будет напечатано: только названия книг или вся информация, предоставленная пользователем. Вот мой основной код:

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        int index = 0;
        Scanner reader = new Scanner(System.in);
        ArrayList<Books> book = new ArrayList<>();
        while (true) {
            System.out.println("Name of the book: ");
            String name = reader.nextLine();
            if (name.isEmpty()) {
                break;
            }
            System.out.println("Number of pages: ");
            int pages = Integer.parseInt(reader.nextLine());
            System.out.println("Year: ");
            int year = Integer.parseInt(reader.nextLine());
            book.add(new Books(name,pages,year));
        }
        while (true) {
            System.out.println("What do you want to print?");
            String whatwillbeprinted = reader.nextLine();
            if (whatwillbeprinted.equals("everything")) {
                while(index < book.size()) {
                    System.out.println(book.get(index));
                    index++;
                }
            }
            if (whatwillbeprinted.equals("names")) {
                while(index < book.size()) {
                    // print only names of the books
                }
            }
        }
        }
    }

А вот мой Java класс с именем Books:

public class Books {
    private String name;
    private int pages;
    private int year;

    public Books(String name, int pages, int year) {
        this.name = name;
        this.pages = pages;
        this.year = year;
    }
    @Override
    public String toString() {
        return this.name + ", " + this.pages + ", " + this.year;
    }
}

Все работает правильно до этого последнего оператора while. Как я могу печатать только первые элементы моих объектов (названия книг)? Заранее спасибо.

1 Ответ

0 голосов
/ 22 марта 2020
  public class Books {
    private String name;
    private int pages;
    private int year;

    public Books(String name, int pages, int year) {
        this.name = name;
        this.pages = pages;`
        this.year = year;
    }
    @Override
    public String toString() {
        return this.name + ", " + this.pages + ", " + this.year;
    }

    public String getName(){
        return name;
    }
 }

Затем, вызывая book.getName (), вы можете получить название книги, теперь просто напишите al oop, в котором отобразите название каждой книги

PS путаница с названием класс: имя Книги неверно, так как класс хранит информацию только об одной книге. Книга - правильное название

Код названия книги:

for(int i = 0;i<book.lenght;i++)
{
   System.out.println("Name of book: " + book[i].getName());
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...