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

さて、すべてが完全に機能し、出力は想定と一致しますが、これらの2行をコメントアウトした場合にのみ、わかりません。

BushelBasket gary = new BushelBasket();
gary.print();

コンパイルしようとすると、これらの 2 行が原因でエラーが発生し、修正方法がよくわかりません。それが与えるエラーは、「エラー: クラス BushelBasket のコンストラクター BushelBasket は、指定された型に適用できません。」メソッドが呼び出される他のすべての時間には、それと一緒に呼び出される番号がありますが、そうでない場合はどうすればよいかわかりません。また、メソッドが呼び出されたときにオブジェクトがない場合は、デフォルトでゼロになると想定されます。

4

1 に答える 1

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.
}
于 2013-03-17T14:23:42.067 に答える