-3

所以我的问题直接针对我的家庭作业。在您问之前,是的,我已经查看了其他问题,并且查看了 java 文档以尝试帮助我,但我只了解这么多..

你已经成为餐厅大亨了。您拥有几家快餐连锁店。但是,您现在需要设置所有快餐连锁店都必须遵循的标准,以使您的软件全面统一。有一些规则对所有餐厅都是一样的。

创建一个名为 Restaurant 的抽象类

创建一个函数/方法,在调用时打印餐厅的名称。

创建一个名为总价的抽象函数/方法

创建一个名为菜单项的抽象函数/方法

创建抽象函数/方法名称位置

创建一个名为 McDonalds 的类来扩展 Restaurant

实现所有抽象方法

添加逻辑,以便总价方法/函数将给出包含 6% 税的餐食总价

添加一个返回名为 hasPlayPlace 的布尔值的方法。当此位置有游乐场时返回 true

创建一个构造函数,用于设置麦当劳的名称、位置和 hasPlayPlace

public class McDonalds extends Restaurant {
    private String name;
    private String location;
    private boolean hasPlayPlace;
    Scanner input = new Scanner(System.in);

    public McDonalds (String name, String location, boolean hasPlayPlace) {
        setName(name);
        setLocation(location);
        setHasPlayPlace(hasPlayPlace);
    }

    McDonalds location1 = new McDonalds("McDonalds", "Kirkman", false);
    McDonalds location2 = new McDonalds("McDonalds 2", "International Dr.", true);

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getLocation() {
        return location;
    }
    public void setLocation(String location){
        this.location = location;
    }
    public boolean isHasPlayPlace() {
        return hasPlayPlace;
    }
    public void setHasPlayPlace(boolean hasPlayPlace) {
        this.hasPlayPlace = hasPlayPlace;
    }


    public void totalPrice() {
        double totalPrice = 0;
        double tax = 0.06;
        totalPrice += (totalPrice * tax);       
    }

    public void menuItems() {
            //some syntax is wrong in this method
        double mcChicken = 1;
        double fries = 1.25;
        System.out.println("1. Mc Chicken $1");
        System.out.println("2. Fries $1.25");
        int choice = input.nextInt();
        switch (choice){
        case 1: mcChicken *= tax;
        case 2: fries *= tax;
        }

    }

    public void location() {
        //Don't know what's supposed to go in here.
        //But I've implemented the method as I was supposed to.
    }

}

这一切是否有意义基本上就是我要问的。定位方法应该怎么做?这个类中的getter和setter有什么用,我做对了吗?

4

4 回答 4

2

1)您的构造函数结构良好,但您应该使用Strings 而不是chars 作为名称和位置。Achar只能容纳一个字符。

2)您可以创建一个类的多个实例:

McDonalds location1 = new McDonalds("McDonald", "Kirkman", true);
McDonalds location2 = new McDonalds("McDonald2", "Kirkman", false);

3) 您应该以百分比而不是总和的形式将税款添加到价格中:price * 1.06. 打印总价时,请注意不要更改不含税的价格。

于 2012-12-01T00:45:12.607 回答
2

String名称和位置不应该char

我喜欢从构造函数中调用 setter 的风格,因为它是一种代码重用形式,特别是如果对这些值进行特殊检查,例如不为 null - 调用他的 setter 意味着您只在一个地方检查它。

你的代码不会编译,但你很接近:

McDonalds location1 = new McDonalds("Some name", "Kirkman", true);

你的计算也有点偏差:

double tax = 0.06;
totalPrice *= (tax + 1);

但是,这是危险的,因为如果调用两次,它将增加两次税收。最好有一个方法返回每次计算的含税价格。具有副作用的吸气剂是设计错误。即有:

public double getTaxIncPrice() {
    double tax = 0.06;
    return totalPrice * (1 + tax);
}
于 2012-12-01T00:44:00.447 回答
1

除了Bohemian指出的问题(名称和位置应该是String,而不是char):

您的构造函数调用需要在 String 参数上加上引号:

McDonalds location1 = new McDonalds("McDonald", "Kirkman", true);

并且您的税收计算不正确 - 您需要将总额乘以税收百分比,并且您必须等到您实际有总额才能进行计算。

于 2012-12-01T00:48:24.667 回答
0

刚刚编辑了我的代码并提供了问题。到目前为止,你们的意见有所帮助。

public String TacoBellSauce(String fire, String hot, String mild) {
    System.out.println("What sauce would you like to have?");
    System.out.println("1. Fire");
    System.out.println("2. Hot");
    System.out.println("3. Mild");
    int choice = input.nextInt();
    switch(choice) {
    case 1:
        return fire;
    case 2:
        return hot;
    case 3:
        return mild;
    }
    return null;
}

这也是我的 TacoBell 类的方法。我将如何在测试类中返回它?它说要在 TacoBell 中创建一个方法,该方法返回一串我想要的辣酱。但是它在测试类中说调用 hotsauce 并返回 hot。我还没有创建那个类,因为我专注于用麦当劳和 TacoBell 来纠正一切。

于 2012-12-01T01:15:43.990 回答