java - 创建 Java 类

标签 java arrays class

我目前正在开发一个库存程序,涉及一个一维数组、2 个类(Store 和 Book)以及其他一些东西,例如方法和构造函数。

Store 类是主类,我猜你可能会说它应该包含 main() 方法,并且应该从文件中读取购买列表,使用适当的消息处理每个购买(ISBN 号,数量、价格或问题(例如缺货或没有)),存储最多 15 本 Book 类型书籍的数组,读取库存文件的方法,处理购买的方法,打印的方法结账时的库存以及售出的书籍数量和结账时的金额。

Book 类包括书籍对象(每个书籍对象包含 ISBN 字符串、双倍价格和 int 副本)、构造函数、getter 和 setter 以及打印信息的方法。

由于数组应该在 Store 类中创建,但属于 Book 类型并由书籍对象组成(我假设?),所以我很难弄清楚如何正确执行此操作(分配isbn 的值、价格、复制变量、正确设置构造函数等)。

更新 我现在遇到的主要问题是能够从 printInfo 方法打印书籍对象。我在该方法的打印语句中收到一条错误消息,指出“找不到符号。符号:书”。我还无法真正看到该程序是否真正在工作,因为这就是我在开始添加更多方法来执行依赖于本书的其他操作之前此时需要看到的内容(打印出来的书籍对象)对象是正确的。

这是我迄今为止想出的代码:

商店类:

import java.util.Scanner;
import java.io.*;

public class Store {
    public static void main(String[] args) throws Exception {
        Book[] books = readInventory();

        for (Book : books) {
            System.out.printf("ISBN: %s, Price: %f, Copies: %d%n",
            book.getISBN(), book.getPrice(), book.getCopies()); 
        }
    }

    public static Book[] readInventory() throws Exception {
        Book[] books = new Book[15];
        java.io.File file = new java.io.File("../instr/prog4.dat");
        Scanner fin = new Scanner(file);
        String isbn;
        double price;
        int copies;

            while (fin.hasNext()) {
                for(int i = 0; i < books.length; i++) {
                isbn = fin.next();
                price = fin.nextDouble();
                 copies = fin.nextInt();

                 Book book = new Book(isbn, price, copies);
                 books[i] = book;
                }
            }
            fin.close();
            return books;
    }

    public static void printInfo(Book[] books) {
        System.out.println(book);
    }
}

这是我的图书课:

public class Book {
    private String isbn;
    private double price;
    private int copies;

    public Book(String isbnNum, double priceOfBook, int copiesInStock) {
        isbn = isbnNum;
        price = priceOfBook;    
        copies = copiesInStock;
    }

    public String getISBN() {
        return isbn;
    }

    public double getPrice() {
        return price;
    }

    public int getCopies() {
        return copies;
    }

    public void setISBN(String isbn) {
        this.isbn = isbn;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public void setCopies(int copies) {
        this.copies = copies;
    }

    @Override
    public String toString() {
        return String.format("ISBN: %s, Price: %f, Copies: %d%n",
                this.getISBN(), this.getPrice(), this.getCopies());
    }
}

这是我第一次使用类,或者至少在同一个程序中创建多个类,所以我仍在尝试弄清楚它是如何工作的。我一直在阅读在网上找到的教程,该教程有点帮助,但我在将其应用于这种特定类型的程序时遇到了困难。

如有任何建议,我们将不胜感激。

最佳答案

您好,很高兴看到您在跳到这里之前已经努力实际尝试过一些东西。到目前为止,你所做的一切都非常好。但您现在真正需要的是 Book 类 中的 getter 和 setter 方法。这些将允许您返回或设置对象的变量值。

public class Book {
    private String isbn;
    private double price;
    private int copies;

    public Book(String isbnNum, double priceOfBook, int copiesInStock) { // Constructor?
        isbn = isbnNum;
        price = priceOfBook;
        copies = copiesInStock;
    }

    public String getISBN() {
        return this.isbn;
    }

    public double getPrice() {
        return this.price;
    }

    public int getCopies() {
        return this.copies;
    }

    public void setISBN(String value) {
        this.isbn = value;
    }

    public void setPrice(double value) {
        this.price = value;
    }

    public void setCopies(int value) {
        this.copies = value;
    }
}

这应该可以帮助您走上正确的道路。根据您希望信息如何显示,取决于您是否在每个 get 中添加 System.out.println("ISBN: "+ this.isbn); 等code> 函数,或者您可以声明一个单独的函数 getInfo 来简单地打印每个函数。或者,如果您要将其退回商店,则可以随时以这种方式打印。还要注意的另一件事是,在创建 Book 数组时,您已将 books 声明为 Book[] books = new Book[15] code> 对象而不是字符串。如果您需要更多帮助,请告诉我。

关于java - 创建 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24858116/

相关文章:

java - 在 RandomAccessFile 中保存枚举

maven-2 - 从源代码部署 sakai 后 Tomcat 将无法启动

ios - Swift 中的数组不计算对象

javascript - 无法在父js文件中调用子类方法两次

php - Laravel/PHP 命名空间路径的简写

java - 如何恢复 Hibernate 中的 transient 字段,如 readResolve() 以进行 hibernate 序列化?

java - Spring 与 EJB。 Spring可以替代EJB吗?

javascript - 将数组作为参数粘贴到函数 Javascript 时保持数组不变的方法

Javascript添加整数和小数

python 类。 key 作为 self.key 存在,但不存在于 self.__dict__ 中