0

私はJavaを初めて使用し、このコードを作成しました。単純なクラスBoxと、幅と長さの2つの属性、およびいくつかの関数があります。

class Box 
{
    private int width;
    private int length;
    Box(int w, int l)
    {
        setWidth(w);
        setLength(l);    
    }
    public void setWidth(int width)
    {
        this.width = width;
    }
    public int getWidth() 
    {
        return width;
    }
    public void setLength(int length)
    {
        this.length = length;
    }
    public int getLength() 
    {
        return length;
    }
    void showBox()
    {
        System.out.print("Box has width:"+width +" length:"+length);
    }
}

class Main {
    public static void main(String[] args) 
    {
        Box mybox = new Box();
        mybox.setLength(5);
        mybox.setWidth(5);
        mybox.showBox();
    }
}

このエラーが発生します。どうすれば修正できますか?誰かがこれを説明できますか?

Box.java:30: cannot find symbol
symbol  : constructor Box()
location: class Box
                Box mybox=new Box();
4

4 に答える 4

1

デフォルトのコンストラクターを定義する必要があります。

Box()
{
    length=0;
    width=0;
}

Javaでは、コンストラクターを作成していない場合、コンパイラーがデフォルトのコンストラクター自体を作成することがあります。ただし、パラメーター化されたコンストラクターを作成し、それを定義せずにデフォルトコンストラクターを使用しようとすると、コンパイラーは取得したエラーを生成します。

于 2012-02-14T10:43:46.680 に答える
1

に定義されている唯一のコンストラクターBoxはですBox(int w, int l)

次のように変更main()します。

Box mybox = new Box(5, 5);
mybox.showBox();

またはBox、引数をとらずに初期化するコンストラクターを持つように変更しwidthますlength

于 2012-02-14T10:44:57.740 に答える
0

または、定義したコンストラクターを使用して、長さと幅をコンストラクターに渡します...

Box myBox = new Box(4,3);
myBox.showBox();

次に、定義したコンストラクターが、渡されたint値を使用してメソッドsetLength()およびsetWidth()を呼び出します。(この場合、値は4と3です)

于 2012-02-14T10:46:07.117 に答える
0

カスタムコンストラクターを定義すると、デフォルトのコンストラクターは使用できなくなります。これを使用する場合は、明示的に定義する必要があります。

以下が機能するように2つのコンストラクターを定義できます

Box(int w, int l)
{
    setLength(l);
    setWidth(w);
}

Box()
{
   //this is the default
}

これで、両方を使用できます。

new Box()
new Box(w,l)
于 2012-02-14T10:54:31.577 に答える