【问题标题】:Java Objects Array: How to print only first elements of objects?Java Objects Array:如何仅打印对象的第一个元素?
【发布时间】:2020-03-22 14:55:27
【问题描述】:

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

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

【问题讨论】:

  • 提示:Book 是一个更好的名称,因为它代表一本书。并使用books 作为数组名称,因为它包含多本书。

标签: java arrays object


【解决方案1】:
  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()就可以得到书名了,现在只需要写一个循环显示每本书的名字

P.S 对类名的混淆:Books 的名称不正确,因为该类仅存储有关一本书的信息。书 - 正确的标题

书名代码:

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

【讨论】:

  • 当我尝试打印 book.getName() 并使用传统的 index++ 循环时,Netbeans 编译器说“找不到符号”。
  • System.out.println(book.get(index).getName()); 但将 book 重命名为 books
  • 如果答案对您有帮助,请单击复选标记将其标记为正确。
  • 对于数组的名称混淆,请见谅。我是软件工程专业的学生,​​今天刚刚了解了对象数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-19
  • 1970-01-01
相关资源
最近更新 更多