Cookie Java项目

时间:2014-04-18 04:57:32

标签: java

我进入java课程几周,而且我的作业之一似乎无法弄明白。这是作业

“显示三种cookie的菜单。使用GetGoodInt提示用户他们想要什么样的cookie(公共静态int GetGoodInt(int tLow,int tHigh)如果输入太高则说高,如果它太低,说低,如果不是int显示错误)jar。   创建一个cookie,将它交给烤箱烹饪,然后交给一个人吃它。 !文本粗体如然后声明后面是一个既需要又不可更改的类!

曲奇

  • boolean mCooked

  • String mFlavor

  • Cookie(String tFlavor)//这是一个构造函数。请注意,如果这样,它将不允许您使用惰性默认构造函数。

  • String toString()//这使您可以将cookie输出到控制台。切勿手动调用。

烤箱

  • void Cook(Cookie tCookie)//只需将mCooked设置为true
  • 即可

  • void EatCookie(Cookie tCookie)//如果它已煮熟,输出类型及其好处。如果不是,请打印一句关于沙门氏菌症状的句子。

示例输出:

What type of cookie would you like?

1) Chocolate chip

2) Peanut butter

3) Oatmeal raisin

4

Not a choice.

r

Not a number

3

That was a great Oatmeal raisin cookie."

这是我到目前为止所编写的内容,但我遇到了我认为isconstructor的问题,到目前为止我所尝试的一切都给了我一个运行时错误。

这是我的所有代码

package mainpackage;

public class Cookie 
{
public Boolean mCooked;
public String mFlavor;
public Cookie(String tFlavor)
{
    tFlavor=mFlavor.toString();
}

public String toString()
{
    int i = Week9Jar.Input.GetGoodInt(1, 3);
    String tFlavor= Integer.toString(i);
    if(tFlavor=="1")
        mFlavor="Chocolate Chip";
    else if(tFlavor=="2")
        mFlavor="Peanut Butter";
    else if(tFlavor=="3")
        mFlavor="Oatmeal Raisin";
    return mFlavor;
}

}


package mainpackage;


public class Oven 
{
void Cook(Cookie tCookie)
{
tCookie.mCooked=true;
}


}

package mainpackage;

public class main {

public static void main(String[] args) {
    // Week 9 Homework part I

    Cookie tCookie=null;
    Oven tOven= new Oven();
    Person tPerson = new Person();
    System.out.println("What type of Cookie would you like?");
    System.out.println("1) Chocolate Chip");
    System.out.println("2) Peanut Butter");
    System.out.println("3) Oatmeal Raisin");
    //get Type from user
    tCookie=new Cookie(Week9Jar.Input.GetGoodInt(1, 3));
    tOven.Cook(tCookie);
    tPerson.EatCookie(tCookie);

}

}

1 个答案:

答案 0 :(得分:2)

Cookie的构造函数是错误的:您将tFlavor作为参数并为其赋值,并且在执行构造函数后,该值将丢失。你可能想要的是:

public Cookie(String tFlavor) {
    mFlavor = tFlavor;
}

您无需在toString个对象上调用String:它们已经是字符串了!

此外,从另一个类访问类的数据成员也不是一个好习惯,即使它来自同一个包:

public void Cook(Cookie cookie) {
    cookie.setCooked(true);
}

在您的班级setCooked中添加Cookie方法:

public void setCooked(boolean b) {
    mCooked = b;
}