public class AppleOrchard
{
public static void main(String [] args)
{
System.out.println("Rick...");
BushelBasket rick = new BushelBasket(0);
rick.print();
rick.pick(11);
rick.pick(22);
rick.print();
rick.eat(4);
rick.print();
rick.spill();
rick.print();
System.out.println("Newt...");
BushelBasket newt = new BushelBasket(100);
newt.print();
System.out.println( newt.isEmpty() );
System.out.println( newt.isFull() );
System.out.println( newt.getApples() );
System.out.println( newt.roomLeftInBasket() );
System.out.println("Michele...");
BushelBasket michele = new BushelBasket(0);
System.out.println( michele.isEmpty() );
System.out.println( michele.isFull() );
michele.pick(25);
System.out.println( michele.isEmpty() );
System.out.println( michele.isFull() );
michele.pick(100);
System.out.println( michele.isEmpty() );
System.out.println( michele.isFull() );
System.out.println("Herman...");
BushelBasket herman = new BushelBasket(-5); // should default to 0
herman.print();
System.out.println("Jon...");
BushelBasket jon = new BushelBasket(300); // should default to 125
jon.print();
System.out.println("Ron...");
BushelBasket ron = new BushelBasket(20); // starts with 20
ron.print();
ron.eat(50); // can only eat down to zero apples
ron.print(); // should see zero apples
ron.eat(10); // back to 10
ron.pick(1000); // basket can only hold 125 apples
ron.print(); // should print 125
System.out.println("Gary...");
BushelBasket gary = new BushelBasket(); // should default to 0
gary.print();
}
}
class BushelBasket
{
int apples;
BushelBasket(int apples)
{
if(apples>125)
this.apples = 125;
else if(apples < 0)
this.apples = 0;
else
this.apples = apples;
}
public void spill()
{
apples = 0;
}
public void pick(int x)
{
apples = apples + x;
if (apples < 0)
apples = 0;
else if(apples > 125)
apples = 125;
}
public void eat(int x)
{
apples = apples - x;
if (apples < 0)
apples = 0;
else if(apples > 125)
apples = 125;
}
public int getApples()
{
return this.apples;
}
public void print()
{
int x = getApples();
System.out.println("This bushel basket has " + x + " apples in it.");
}
public boolean isEmpty()
{
if (apples == 0)
{
return true;
}
else
{
return false;
}
}
public boolean isFull()
{
int full = 125;
if (apples >= full)
{
return true;
}
else
{
return false;
}
}
public int roomLeftInBasket()
{
int room = 125 - apples;
return room;
}
}
好吧所以一切都很完美,我的输出符合它的设想,但只有当我注释掉这两行时我才能弄明白。
BushelBasket gary = new BushelBasket();
gary.print();
当我尝试编译时,这两行导致错误,我真的不明白如何解决它。它给出的错误是“错误:类BushelBasket中的构造函数BushelBasket不能应用于给定的类型;”我有点理解,因为在调用该方法的所有其他时间它都有一个调用它的数字,但如果不这样做则不知道该怎么做。此外,如果在调用方法时它没有任何对象,则假设它默认为零。
答案 0 :(得分:0)
在Java中,如果方法或构造函数接受1个参数,则必须传递1个参数。
您的BushelBasket构造函数将int作为参数,因此您必须使用int作为参数调用它。
你可以添加另一个构造函数,它将字段保留为默认值:
int apples;
BushelBasket(int apples) {
...
}
BushelBasket() {
// do nothing, so apples will be 0.
}
或者您可以定义另一个不带参数的构造函数,它将使用int参数调用它并将其传递给0:
int apples;
BushelBasket(int apples) {
...
}
BushelBasket() {
this(0); // calls the other BushelBasket constructor.
}