1

我在编译代码时不断收到错误消息。我相信我的逻辑很好,但我在创建 BushelBasket 类时一定犯了错误。我的教练告诉我不要以任何方式改变主要方法。提前感谢您的帮助!

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()
{
        public void spill()
        {
            apples = 0;
        }

        public void pick(int x)
        {
            apples = apples + x;
        }

        public void eat(int x)
        {
            apples = apples - x;
        }

        public int getApples()
        {
            return apples;  
        }

        public void print()
        {
            int x = getApples();
            System.out.println("This bushel basket has " + x + " apples in it.");
        }

        public boolean isEmpty()
        {
            int emtpy = 0;

            if (apples <= emtpy)
            {   
                return true;
            }

            else 
            {
                return false;
            }
        }

        public boolean isFull()
        {
            int full = 125;

            if (apples >= full)
            {   
                return true;
            }

            else 
            {
                return false;
            }

        }

        public boolean roomLeftInBasket()
        {
            int full = 125;

            if (apples < full)
            {   
                return true;
            }

            else 
            {
                return false;
            }

        }

}
4

3 回答 3

3

显然,您也忘了声明apples变量和构造函数:

class BushelBasket {
  int apples;

  BushelBasket() {
  }  

  BushelBasket(int apples) {
    this.apples = apples;
  }

  ...
}

顺便说一句,您的编译器错误会有所帮助。

于 2012-11-19T08:16:33.560 回答
1

这条线(和类似的)...

 BushelBasket michele = new BushelBasket(0);

...正在尝试BushelBasket使用int参数调用构造函数。我没有看到任何这样的构造函数,也没有看到apples您一直引用的变量的声明。

编译器错误在这两点上应该已经很清楚了。仔细阅读编译器错误消息非常重要。

于 2012-11-19T08:17:06.673 回答
1

Your java app can't compile.

you need to declare a variable apples in BushelBasket

and you have missing constructor that assigns apples

public BushelBasket(int apples)
{
   this.apples = apples;

}

BTW,

Instead of

class BushelBasket()

it should be

class BushelBasket
于 2012-11-19T08:18:20.657 回答