无法获得Java数组的正确输出

时间:2012-06-06 15:31:31

标签: java arrays user-input

转让问题是: -

您被要求为书店创建一个有助于跟踪书籍的应用程序。

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

  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]);

        }
    }

}

2 个答案:

答案 0 :(得分:4)

这项任务让我觉得它不仅仅是一个代码设计练习,而是一个“让代码工作”的练习。所以只是让它工作不会削减它(如果你想要一个好的标记)。

“用正确的数据类型描述书名和书价的属性或变量的类”。 “该类应该存储书籍集合(使用数组)”,你不是真的这样做,你只是在主要功能中完成所有这些。

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

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

答案 1 :(得分:2)

来自this的更多工作,对吧?

我在实现中犯了一个错误: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)函数。