-1

コンパイルするとエラーが発生します: シンボルが見つかりません symbol : constructor Team()

public class Team {
    public String name;
    public String location;
    public double offense;
    public double defense;

    public Team(String name, String location) {

    }     

    public static void main(String[] args) {

        System.out.println("Enter name and location for home team");
        Scanner tn = new Scanner(System.in);
        Team team = new Team();
        team.name = tn.nextLine(); 

        Scanner tl = new Scanner(System.in);
        team.location = tl.nextLine();
    }
}

修正方法はありますか?どうもありがとうマイル

4

6 に答える 6

5

クラスでコンストラクターを明示的に作成した場合、コンパイラーはデフォルトのコンストラクターを提供しません。no-argsコンストラクターを明示的に作成する必要があります。

クラスが明示的に何も宣言していない場合、Java コンパイラは、デフォルト コンストラクタと呼ばれる引数のないコンストラクタを自動的に提供します。この既定のコンストラクターは、クラスの親の引数なしのコンストラクターを呼び出すか、クラスに他の親がない場合は Object コンストラクターを呼び出します。親にコンストラクターがない場合 (Object にコンストラクターがある場合)、コンパイラーはプログラムを拒否します。

ドキュメントの詳細を読む

更新されたコード-

public class Team {
    public String name;
    ...
    public Team(){...}
    public Team(String name, String location) {...}   
    ...
}
于 2013-09-11T05:39:03.753 に答える
2

エラーを解決するためのデフォルトのコンストラクターを提供する

于 2013-09-11T05:38:42.417 に答える
1

Team クラスにはデフォルトのコンストラクターはありませんが、それを使用してオブジェクトを作成しました。試す、

public class Team {
    public String name;
    public String location;
    public double offense;
    public double defense;

    public Team(){}

    public Team(String name, String location) {

    }     

    public static void main(String[] args) {

        System.out.println("Enter name and location for home team");
        Scanner tn = new Scanner(System.in);
        Team team = new Team();
        team.name = tn.nextLine(); 

        Scanner tl = new Scanner(System.in);
        team.location = tl.nextLine();
    }
}

他のコンストラクターがある場合は、引数なしのコンストラクターを自分で定義する必要があります。他のコンストラクターが定義されていない場合、Java はデフォルトの引数なしのコンストラクターしか提供しないためです。

于 2013-09-11T05:43:01.470 に答える
1

ここでは引数コンストラクタも有効もありません。あなたは次のようにそれをオーバーライドしているので

public Team(String name, String location) {

} 

だからあなたはできませんTeam team = new Team();

この試みの代わりに

      Team team = new Team("Name","Location");

Stringコンストラクターは 2 つの引数しか受け入れないためです。または、クラスに引数コンストラクターを追加しないこともできますTeam

于 2013-09-11T05:50:26.010 に答える
1

非パラメーター コンストラクターもクラスに追加する必要があります。ここで非パラメーターコンストラクターを呼び出そうとしているので:

    Team team = new Team();

これもクラスに追加するだけです:

public Team() {

}   

通常、クラスにコンストラクターが定義されていない場合、コンパイラーはデフォルトの非パラメーターコンストラクターをクラスに追加します。ただし、デフォルト以外のコンストラクターが追加された場合、コンパイラーはデフォルトの非パラメーター コンストラクターを追加しません。上記のように手動で追加する必要があります。

于 2013-09-11T05:38:50.530 に答える
0

定義したコンストラクターは public Team(String name, String location) で、2 つの引数を取ります。

ただし、呼び出したコンストラクターは Team() であり、引数を取りません。つまり、引数リストが異なるため、Team(String name, String location) とは異なるコンストラクターです。

空の Team オブジェクトを作成する場合は、Team() も定義する必要があります。

于 2013-09-11T05:43:11.117 に答える