需要帮助编译 Java(访问器、修改器、构造器)
Need Help Compiling Java (Accessors, Mutators, Constructors)
所以我从事这个项目已经有一段时间了,但由于某种原因,我在掌握 Java 方面遇到了很多困难。
objective是创建3个对象,每个对象包含3个水果,每个水果都有自己的price/value。
我目前在计算这些值时遇到了问题,我敢肯定还有更多的错误,因为我说过到目前为止我在 Java 上遇到了很多问题。
目前我最大的问题是costofBox()
方法。
任何有帮助的建议将不胜感激,我已经为此工作了一个多星期了。
这是整个程序:
public class Project8
{
private String fruit1;
private String fruit2;
private String fruit3;
private String Bundle1;
private String Bundle2;
private String Bundle3;
private int costofBox;
double total;
int broccoli;
int tomato;
int kiwi;
int kale;
int orange;
public String toString()
{
String output = "The box contains: " + Bundle1 + ", " + Bundle2 + ", " + Bundle3 +
"and the cost is $" + costofBox();
return output;
}
public String getBundle1()
{
return Bundle1;
}
public String getBundle2()
{
return Bundle2;
}
public String getBundle3()
{
return Bundle3;
}
public void setBundle1(String Bundle1)
{
Bundle1=fruit1;
}
public void setBundle2(String Bundle2)
{
Bundle2=fruit2;
}
public void setBundle3(String Bundle3)
{
Bundle3=fruit3;
}
public double costofBox()
{
double total=0;
if(Bundle1.equals("broccoli"))
total+=6;
else if(Bundle1.equals("tomato"))
total+=5;
else if(Bundle1.equals("kiwi"))
total+=8;
else if(Bundle1.equals("kale"))
total+=4;
else if(Bundle1.equals("orange"))
total+=7;
if(Bundle2.equals("broccoli"))
total+=6;
else if(Bundle2.equals("tomato"))
total+=5;
else if(Bundle2.equals("kiwi"))
total+=8;
else if(Bundle2.equals("kale"))
total+=4;
else if(Bundle2.equals("orange"))
total+=7;
if(Bundle3.equals("broccoli"))
total+=6;
else if(Bundle3.equals("tomato"))
total+=5;
else if(Bundle3.equals("kiwi"))
total+=8;
else if(Bundle3.equals("kale"))
total+=4;
else if(Bundle3.equals("orange"))
total+=7;
return total;
}
public Project8()
{
fruit1 = "broccoli" + "kale" + "orange";
fruit2 = "kale" + "kiwi" + "orange";
fruit3 = "broccoli" + "tomato" + "kiwi";
}
public Project8(String fruit1, String fruit2, String fruit3)
{
String Bundle1=fruit1;
String Bundle2=fruit2;
String Bundle3=fruit3;
}
public static void main (String [] args)
{
Project8 Bundle1=new Project8 ("broccoli", "kale", "orange");
Project8 Bundle2=new Project8 ("kale", "kiwi", "orange");
Project8 Bundle3=new Project8 ("broccoli", "tomato", "kiwi");
System.out.println("Week 1: " + Bundle1.toString());
System.out.println("Week 2: " + Bundle2.toString());
System.out.println("Week 3: " + Bundle3.toString());
System.out.println("Week4: The box contains:,, and the cost is [=11=].0");
}
}
提前谢谢那些能帮助我的人!
你的问题出在这个构造函数中:
public Project8(String fruit1, String fruit2, String fruit3)
{
String Bundle1=fruit1;
String Bundle2=fruit2;
String Bundle3=fruit3;
}
因为这些赋值前面的String类型,你是在声明新的局部变量!这意味着您的 class:
字段
private String Bundle1;
private String Bundle2;
private String Bundle3;
... 从未被赋予值。当您尝试访问它们时,您会看到您看到的异常,因为它们是 NULL。
如果将构造函数更改为:
public Project8(String fruit1, String fruit2, String fruit3)
{
Bundle1 = fruit1;
Bundle2 = fruit2;
Bundle3 = fruit3;
}
那么您的项目将正常执行。
顺便说一句,有很多方法可以缩短程序的长度,使事情更简洁,并减少重复。我建议一旦您开始使用它,您就可以前往 Code Review,这是 Whosebug 的姊妹网站:他们会给您提出改进建议。如果您决定这样做,请给我评论这个答案!
所以我从事这个项目已经有一段时间了,但由于某种原因,我在掌握 Java 方面遇到了很多困难。
objective是创建3个对象,每个对象包含3个水果,每个水果都有自己的price/value。
我目前在计算这些值时遇到了问题,我敢肯定还有更多的错误,因为我说过到目前为止我在 Java 上遇到了很多问题。
目前我最大的问题是costofBox()
方法。
任何有帮助的建议将不胜感激,我已经为此工作了一个多星期了。
这是整个程序:
public class Project8
{
private String fruit1;
private String fruit2;
private String fruit3;
private String Bundle1;
private String Bundle2;
private String Bundle3;
private int costofBox;
double total;
int broccoli;
int tomato;
int kiwi;
int kale;
int orange;
public String toString()
{
String output = "The box contains: " + Bundle1 + ", " + Bundle2 + ", " + Bundle3 +
"and the cost is $" + costofBox();
return output;
}
public String getBundle1()
{
return Bundle1;
}
public String getBundle2()
{
return Bundle2;
}
public String getBundle3()
{
return Bundle3;
}
public void setBundle1(String Bundle1)
{
Bundle1=fruit1;
}
public void setBundle2(String Bundle2)
{
Bundle2=fruit2;
}
public void setBundle3(String Bundle3)
{
Bundle3=fruit3;
}
public double costofBox()
{
double total=0;
if(Bundle1.equals("broccoli"))
total+=6;
else if(Bundle1.equals("tomato"))
total+=5;
else if(Bundle1.equals("kiwi"))
total+=8;
else if(Bundle1.equals("kale"))
total+=4;
else if(Bundle1.equals("orange"))
total+=7;
if(Bundle2.equals("broccoli"))
total+=6;
else if(Bundle2.equals("tomato"))
total+=5;
else if(Bundle2.equals("kiwi"))
total+=8;
else if(Bundle2.equals("kale"))
total+=4;
else if(Bundle2.equals("orange"))
total+=7;
if(Bundle3.equals("broccoli"))
total+=6;
else if(Bundle3.equals("tomato"))
total+=5;
else if(Bundle3.equals("kiwi"))
total+=8;
else if(Bundle3.equals("kale"))
total+=4;
else if(Bundle3.equals("orange"))
total+=7;
return total;
}
public Project8()
{
fruit1 = "broccoli" + "kale" + "orange";
fruit2 = "kale" + "kiwi" + "orange";
fruit3 = "broccoli" + "tomato" + "kiwi";
}
public Project8(String fruit1, String fruit2, String fruit3)
{
String Bundle1=fruit1;
String Bundle2=fruit2;
String Bundle3=fruit3;
}
public static void main (String [] args)
{
Project8 Bundle1=new Project8 ("broccoli", "kale", "orange");
Project8 Bundle2=new Project8 ("kale", "kiwi", "orange");
Project8 Bundle3=new Project8 ("broccoli", "tomato", "kiwi");
System.out.println("Week 1: " + Bundle1.toString());
System.out.println("Week 2: " + Bundle2.toString());
System.out.println("Week 3: " + Bundle3.toString());
System.out.println("Week4: The box contains:,, and the cost is [=11=].0");
}
}
提前谢谢那些能帮助我的人!
你的问题出在这个构造函数中:
public Project8(String fruit1, String fruit2, String fruit3)
{
String Bundle1=fruit1;
String Bundle2=fruit2;
String Bundle3=fruit3;
}
因为这些赋值前面的String类型,你是在声明新的局部变量!这意味着您的 class:
字段private String Bundle1;
private String Bundle2;
private String Bundle3;
... 从未被赋予值。当您尝试访问它们时,您会看到您看到的异常,因为它们是 NULL。
如果将构造函数更改为:
public Project8(String fruit1, String fruit2, String fruit3)
{
Bundle1 = fruit1;
Bundle2 = fruit2;
Bundle3 = fruit3;
}
那么您的项目将正常执行。
顺便说一句,有很多方法可以缩短程序的长度,使事情更简洁,并减少重复。我建议一旦您开始使用它,您就可以前往 Code Review,这是 Whosebug 的姊妹网站:他们会给您提出改进建议。如果您决定这样做,请给我评论这个答案!