Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单JAVA程序错误,使用多个类_Java_Class_Object - Fatal编程技术网

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

简单JAVA程序错误,使用多个类,java,class,object,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();

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方法中再次对该数据执行。
我把东西弄混了,请帮我更改字符串比较

 coffeeType == "latte" 


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

代码中有几处错误或不合逻辑:

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

int num = 1;

甚至

 System.out.println(" blah blah blah 1");
2)您创建了一个类型为/class Coffee的新对象,但从未在对象中设置变量
String coffeeType
。执行此操作的标准方法是使构造函数如下所示:

main()
中:

在你的
Coffee
课程中,让构造器:

public Coffee(String coffee){
    this.coffeeType = coffee;
}
3)您必须将字符串与方法进行比较:

下面是一些进一步的注意事项:使用getter和setter方法设置变量并检索它们:

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

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

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

试试这个代码。我尝试使用java约定来帮助您理解

你的班级班级:

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

在java中,
=
操作符比较对象引用。要比较字符串,应使用
string.equals(“…”)
方法。

使用
string.equals()
比较字符串。有关更多信息,请参见
if(coffeeType==“latte”)
应该是
if(“latte”.equals(coffeeType))
除了其他人提到的之外,研究访问修饰符、getter和setter也会有所帮助。这些应该可以更好地帮助您封装代码。谢谢大家!这个网站很酷,只是一个提示:
“拿铁”。equals(coffeeType)
有助于防止
NullPointerException
如果
coffeeType
null
是的……在比较变量之前必须使用try-catch和null-check“如果您只使用num打印值1,为什么不将其更改为…”这是我有史以来的第一个java程序,所以我只是对它有了一些感觉。这不应该是实际的,ykwim?老实说,我在编程方面很差,但我仍然想成功,所以我会努力。其余的建议都很贴切,只是我还没有真正接触到建设者。谢谢。我没有指责你什么,我只是发布了这篇文章来帮助你理解Java的工作方式:)我一直处于你的位置,因此我认为这将帮助你提高Java技能。祝你好运
if("latte".equals(this.coffeeType)){  System.out.println("\nThis is latte coffee");  }
public void setType(String type){
    this.coffeeType = type;
}

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

public int getPrice(){
    return this.price;
}
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;
    }
}
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);
        }
    }
}