简单的JAVA程序错误,使用多个类

时间:2015-06-17 07:35:43

标签: java class object

classyclass.java:

package work1;

public class classyclass {

    public static void main(String[] args) {

        int num;
        num = 0;
        num++;
        System.out.println(" blah blah blah " + num);

        Coffee latte = new Coffee();
        Coffee capuccino = new Coffee();

        latte.price = 5;
        capuccino.price = 11;

        latte.beverage();
        capuccino.beverage();                       
    }    
}

Coffee.java:

package work1;

public class Coffee {

    int price;
    String coffeeType;      

    void beverage() {    
        if (coffeeType == "latte" )
        {
            System.out.println("The price of latte is  " + latte.price );
        }       
        else if(coffeeType == "capuccino")
        {
            System.out.println("The price of a cappuccino is  " + capuccino.price);
        }       
    }
}

作为一名冒险进入Java的业余C程序员,我对使用这些类和对象感到非常困惑。 我想要的是将classyclass类中的值带入coffee类,然后在main方法中再次执行该数据。 我正在混合东西,请帮忙

5 个答案:

答案 0 :(得分:1)

更改字符串比较

 coffeeType == "latte" 

coffeeType.equals("latte")

这就是java比较字符串值的方式。根据这些更改对代码的其余部分进行更改。

答案 1 :(得分:1)

您的代码中存在一些错误或不合逻辑的内容:

1)如果您只使用num打印值1,为什么不将其更改为:

int num = 1;

System.out.println(" blah blah blah " + 1);

甚至

 System.out.println(" blah blah blah 1");

2)您创建了类型/类Coffee的新对象,但您从未在对象中设置变量String coffeeType。执行此操作的标准方法是创建一个类似的构造函数:

main()中的

Coffee latte = new Coffee("latte");

并在Coffee类中创建构造函数:

public Coffee(String coffee){
    this.coffeeType = coffee;
}

3)您必须将字符串与.equal()方法进行比较:

if("latte".equals(this.coffeeType)){  System.out.println("\nThis is latte coffee");  }

npinti提到的一些进一步说明:使用getter和setter方法设置变量并检索它们:

public void setType(String type){
    this.coffeeType = type;
}

public void setPrice(int price){
    this.price = price;
}

public int getPrice(){
    return this.price;
}

答案 2 :(得分:0)

试试这段代码。我试图使用java约定来理解你。

您的ClassyClass课程:

import java.util.*;

public class ClassyClass
{
    ArrayList<Coffee> myClub;
    Scanner myInput;
    public ClassyClass()
    {
        myClub = new ArrayList<Coffee>();
        myInput = new Scanner(System.in);

        myClub.add(new Coffee("latte", 5));
        myClub.add(new Coffee("capuccinno", 11));

        System.out.println("Do you want to place an order? Enter 1 for yes and 2 for no.");
        int choice = myInput.nextInt();

        System.out.println(myClub.size());

        if (choice == 1)
        {
            myCoffeeClub();
        }
        else {  }
    }

    public void myCoffeeClub()
    {
        System.out.print("Enter latte or capuccinno: ");
        String item = myInput.next();
        int itemPrice = 0;

        for (Coffee s : myClub)
        {
            if (s.cName.equals(item))
            {
                itemPrice = s.cPrice;
            }
        }
        System.out.println ("The price of "+item+" is "+itemPrice+".");
    }
}

你的咖啡课:

public class Coffee
{
    String cName;
    int cPrice;

    public Coffee (String cName, int cPrice)
    {
        this.cName = cName;
        this.cPrice = cPrice;
    }
}

答案 3 :(得分:0)

你应该在设定价格时设置coffeeType,你会得到正确的结果。

public class classyclass {

    public static void main(String[] args) {

        int num;
        num = 0;
        num++;
        System.out.println(" blah blah blah " + num);

        Coffee latte = new Coffee();
        latte.coffeeType = "latte";
        latte.price = 5;

        Coffee capuccino = new Coffee();
        capuccino.coffeeType = "capuccino";
        capuccino.price = 11;

        latte.beverage();
        capuccino.beverage();
    }
}

public class Coffee {

    int price;
    String coffeeType;

    void beverage() {

        if (this.coffeeType.equals("latte")) {
            System.out.println("The price of latte is  " + this.price);
        }
        else if (this.coffeeType.equals("capuccino")) {
            System.out.println("The price of a cappuccino is  " + this.price);
        }
    }
}

答案 4 :(得分:0)

在java中,string.equals("..")运算符比较对象引用。要比较字符串,您应该使用{{1}}方法。