-1

编译时出现错误:找不到符号符号:构造函数 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

您还需要向您的类添加一个非参数构造函数。当您尝试在此处调用非参数构造函数时:

    Team team = new Team();

只需将其添加到您的课程中:

public Team() {

}   

通常,当类中没有定义构造函数时,编译器会为其添加一个默认的非参数构造函数。但是如果添加了任何非默认构造函数,那么编译器将不会添加默认的非参数构造函数。如上所述,需要手动添加。

于 2013-09-11T05:38:50.530 回答
1

没有参数构造函数,也没有在这里有效。由于您通过以下方式覆盖它

public Team(String name, String location) {

} 

所以你不能这样做Team team = new Team();

而不是这个尝试

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

因为您的构造函数只接受两个String参数。或者您可以不向您的Team类添加参数构造函数。

于 2013-09-11T05:50:26.010 回答
0

您定义的构造函数是 public Team(String name, String location),它有两个参数。

但是,您调用的构造函数是 Team(),它不接受任何参数,这意味着它是与 Team(String name, String location) 不同的构造函数,因为它们具有不同的参数列表。

如果你想创建一个空的 Team 对象,你也应该定义一个 Team()

于 2013-09-11T05:43:11.117 回答