使用Java中的Book类和TestBook类创建程序

时间:2014-11-09 07:55:36

标签: java class object

我试图创建允许用户输入书籍的java程序 号码和程序将显示所选书籍的价格。我'已经 创建了这本书类,但大多数都没有语法错误 可能存在逻辑错误,类TestBook有错误 在调用输入。你能帮助我吗?我输了:(这里是我的代码:

class Book{

    String title;
    String author;
    double price;
    int option;

    //constructor
    Book(String title, String author, double newPrice){
        title = title;
        author = author;
        price = newPrice;

    }

    public String getTitle(){
        return title;
    }
    public String getAuthor(){
        return author;
    }
    public double getPrice(){
        return price;
    }
    public int getOption(){
        return option;
    }

    public void setPrice(int option, double price, double newPrice){
        if (option == 1){
            price = 20.00;
            newPrice = price;
        }
        else if (option == 2){
            price = 15.00;
            newPrice = price;
        }
        else if (option == 3){
            price = 23.90;
            newPrice = price;
        }
        else if (option == 4){
            price = 27.30;
            newPrice = price;
        }
        else if (option == 5){
            price = 50.00;
            newPrice = price;
        }
        else if (option == 6){
            price = 13.50;
            newPrice = price;
        }
    }
    public void setOption(int newOption){
        option = newOption;
    }
}

TestBook类

import java.util.Scanner;

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

        Scanner input = new Scanner (System.in);

        //The Book List
        System.out.println("The Book List");
        System.out.println("1)How to do programming 12th Edition by Liang.\n2)Malaysian Food Recipe by Nadia Bt Mahmud.\n3)What is Islam by Ustad Manzoor Malik.\n4)Urban Legend by Christine R.M.\n5)Fundamental of Calculus by Prof. Abu.\n6)How to raise your kids by Salsabila\n");
        System.out.println("Choose your book number to know the price: ");
        int option = input.nextInt();

        Book b1 = new Book(theOption(option);// invoke the option to get the price
        System.out.println("The price is: "+ b1.getPrice);


    }
    //Method option
    public static int theOption(int option){
        return option;
    }
}

2 个答案:

答案 0 :(得分:1)

您在方法调用中忘记了()

替换

System.out.println("The price is: "+ b1.getPrice);

System.out.println("The price is: "+ b1.getPrice());

除了那个错误,你正在调用一个不存在的构造函数:

Book b3 = new Book (8));

您的Book构造函数接受3个参数。在那次通话中你还有一个)

答案 1 :(得分:1)

您的代码存在很多问题。

  1. 您要求输入书籍,但不要使用开关或if语句来使用该输入。无论用户输入什么,您都将始终打印所有三个输出。

  2. 您有一个具有两个参数的Book对象的构造函数,但是当您使用Book b1 = new Book(1)调用构造函数时,您只使用一个。除非您的构造函数只有一个参数,否则这将产生错误。

  3. 在您的SetPrice函数中,您正在隐藏对象的变量,而本地的Price副本将获得新值,而不是对象的Price副本。

  4. 还有更多,但这会让你开始。