0
import java.lang.*;

public class GrammerStack extends GrammerStructure implements StringStack { 
 private String structName; 
 private int cap;

public GrammerStack(String structureName, int limit){ 
 this.structName = structureName; 
 this.cap = limit; 
 System.out.println(structName+"["+cap+"]");
} 
public void GrammerStructure(String structureName){ 
 this.structName = structureName; 
}

//Empty overrides. 
public String[] asArray(){}; 
public String push(String item) throws FillException{}; 
public String pop() throws EmptyException{}; 
public boolean contains(String query){}; 
public void empty(){}; 
public double fillPercent(){};

public String getName(){ return structName; }

public void main(String args[]){ 
 GrammerStack("Stack1",3); 
}

}

javac GrammerStack.java を実行すると、次のようになります。

GrammerStack.java:15: cannot find symbol
symbol  : constructor GrammerStructure()
location: class GrammerStructure
   public GrammerStack(String structureName, int limit){
                                                                                                  ^
GrammerStack.java:41: cannot find symbol
symbol  : method GrammerStack(java.lang.String,int)
location: class GrammerStack
       GrammerStack("Stack1",3);
       ^
2 errors

ここで何が問題なのかわかりません。私の方法もファイルの名前と一致していません。この場合は「Grammer」が正しいです。

何か助けはありますか?

4

4 に答える 4

2

super(structureName);最初の問題については、コンストラクターの最初の行として追加します。public GrammerStructure(String name)スーパークラスでコンストラクターが定義されていると仮定します。そうでない場合は、コンストラクターを共有してください。

public GrammerStack(String structureName, int limit){
  super(structureName);
  this.structName = structureName; 
  this.cap = limit; 
  System.out.println(structName+"["+cap+"]");
}

2 番目の問題については、キーワードがありませんnew。以下に変更します。

public void main(String args[]){ 
          GrammerStack("Stack1",3); 
 }

 public void main(String args[]){ 
     new GrammerStack("Stack1",3); 
 }

また

 public void main(String args[]){ 
   GrammerStack grammerStack = new GrammerStack("Stack1",3); 
 }
于 2012-10-09T05:10:10.757 に答える
0

このエラーは、スーパー クラス コンストラクターで、引数なしまたは既定のコンストラクターを定義していないために発生しました。

スーパークラスで引数を持つコンストラクターを定義する場合、この特定の理由から、引数のないコンストラクターも定義する必要があります。コンパイラーはデフォルトのコンストラクターを追加しません。

super()子クラスのコンストラクターでは、デフォルトの呼び出しがjavacによって追加されるため、子クラスはあなたが言及したエラーをスローします。

于 2012-10-09T05:09:47.777 に答える
0
    import java.lang.*;

    public class GrammerStack extends GrammerStructure implements StringStack { 
     private String structName; 
     private int cap;
   public GrammerStructure() {
}

    public GrammerStack(String structureName, int limit){ 
     this.structName = structureName; 
     this.cap = limit; 
     System.out.println(structName+"["+cap+"]");
    } 
    public void GrammerStructure(String structureName){ 
     this.structName = structureName; 
    }

    //Empty overrides. 
    public String[] asArray(){}; 
    public String push(String item) throws FillException{}; 
    public String pop() throws EmptyException{}; 
    public boolean contains(String query){}; 
    public void empty(){}; 
    public double fillPercent(){};

    public String getName(){ return structName; }

    public void main(String args[]){ 
     GrammerStack("Stack1",3); 
    }

    }

引数なしでデフォルトのコンストラクターを定義していません。スーパークラスで引数付きのコンストラクターを定義するときは、引数なしでデフォルトのコンストラクターを定義する必要があります

于 2012-10-09T05:12:03.737 に答える