首页 > 解决方案 > Java Objects Array:如何仅打印对象的第一个元素?

问题描述

我正在尝试创建一个程序,该程序将书名、页数和出版年份作为用户输入。当用户没有在名称字段中输入任何内容时,程序应该询问用户将打印什么:只有书籍的名称或用户提供的所有信息。这是我的主要代码:

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
                }
            }
        }
        }
    }

这是我的名为 Books 的 Java 类:

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 语句之前,一切都正常运行。如何仅打印对象的第一个元素(书名)?提前致谢。

标签: javaarraysobject

解决方案


  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() 可以得到书名,现在只需要写一个循环显示每本书的名字

PS 关于类名称的混淆:名称 Books 不正确,因为该类仅存储有关一本书的信息。书名 - 正确的书名

书名代码:

for(int i = 0;i<book.lenght;i++)
{
   System.out.println("Name of book: " + book[i].getName());
} 

推荐阅读