-1

作业的问题是:-

您被要求为帮助跟踪书籍的书店创建应用程序。

您需要为您的应用程序创建以下类:

  1. 用正确的数据类型描述书名和书价的属性或变量的类。
  2. 该类应存储书籍的集合(使用数组)。这个类还应该跟踪收藏中的书籍总数,收藏中书籍的总成本。
  3. 【加分】班级还应显示最贵的书名和价格以及最便宜的书名和价格。

要求

您应该实现数组来存储书籍详细信息。无需实现任何数据库或文件。

所有 java 源文件都必须包含您的姓名、学生 ID、课程和日期。将此信息包含在源代码的注释中(在标题中)。

你的每个类都应该被适当地注释并检查代码

我已经成功地将书籍存储在数组中,并使其显示。但是我有问题,这本书的价格。它输出书名,但不输出购买书籍的价格和总价,请看我下面的编码。

import java.util.Scanner;

public class array_userinput {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        int numOfBook;
        // prompts the user to enter the number of books he/she wants
        System.out.print("How many numbers of books u want: "); 

        double[] bookPrice = new double[numOfBook];
        int num = input.nextInt();
        // double price[];
        double totalCost = 0;
        String array[] = new String[num];

        System.out.print("Enter the " + num + " book names now: ");

        for (int i = 0; i < array.length; i++) {

            array[i] = input.next();

            System.out.println("These are the books you have entered: "
                    + array[i]);
            System.out.print("Please enter book price: ");
            bookPrice[i] = input.nextDouble();
            System.out.println(numOfBook);

            totalCost += bookPrice[i];
            double max = prices[i];
            int maxBook = 0;
            for (int i = 1; i < books.length; i++) {
                if (prices[i] > max) {
                    max = prices[i];
                    maxBook = i;
                }
            }

            System.out.print("Cheapest book: " + books[maxBook]);
            double min = prices[i];
            int minBook = 0;
            for (int i = 1; i < books.length; i++) {
                if (prices[i] < min) {
                    min = prices[i];
                    minBook = i;
                }
            }
            System.out.print("Cheapest book: " + books[minBook]);

        }
    }

}
4

2 回答 2

4

这个作业让我觉得这是一个代码设计练习,而不是“让代码工作”练习。所以仅仅让它发挥作用并不会削减它(如果你想要一个好成绩)。

“用正确的数据类型描述书名和书价的属性或变量的类”。“该类应该存储书籍集合(使用数组)”,您并没有真正这样做,您只是在 main 函数中完成所有操作。

您需要使用一点 OO 设计来创建一些简单的类(例如 Book 应该具有标题和价格以及构造函数和 getter 方法)。然后,您可以将它们的实例存储在您的阵列中并询问它们。对于最便宜的图书问题,您可以实现 compareTo 并使用 for(Book book in books) 构造。

还要考虑在“main”中尝试实现的功能分解,保持功能简单易读。

于 2012-06-06T15:37:26.707 回答
2

更多的工作对吧?

我在实现中犯了一个错误:double max = prices[i];不应该编译,因为我没有在这个上下文中初始化。尝试这个:

double min = prices[0];
int minBook = 0;
for(int i = 1; i < books.length; i++) {
    if(prices[i] < min) {
        min = prices[i];
        minBook = i;
    }
}
System.out.print("Cheapest book: " + books[minBook]);

Jeff Watkins 的回答也完全正确:根据家庭作业,您将需要更好的设计。听从他对 Book 对象的建议;这很好。关于将 main 分解为函数,您可以编写将使用public Book minBook(Book[] books)的函数或类似的东西。public Book maxBook(Book[] books)aBook.compareTo(Book other)

于 2012-06-06T15:34:34.633 回答