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