找不到符号:构造函数

时间:2013-09-11 05:38:01

标签: java

当我编译时,我收到错误: 找不到标志 symbol:构造函数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();
    }
}

任何想法如何解决? 非常感谢 英里

6 个答案:

答案 0 :(得分:4)

如果在类中显式创建任何构造函数,则编译器不提供默认构造函数。您需要显式创建no-args构造函数。

  

如果一个类没有显式声明任何Java编译器   自动提供一个无参数的构造函数,称为默认值   构造函数。此默认构造函数调用类父类   无参数构造函数,如果类没有,则为Object构造函数   其他父母。如果父级没有构造函数(Object确实有一个),   编译器将拒绝该程序。

Read more on Documentation

更新代码 -

public class Team {
    public String name;
    ...
    public Team(){...}
    public Team(String name, String location) {...}   
    ...
}

答案 1 :(得分:2)

提供默认构造函数来解决错误

答案 2 :(得分:1)

您还需要在类中添加非参数构造函数。当你试图在这里调用非参数构造函数时:

    Team team = new Team();

只需将此内容添加到您的课程中:

public Team() {

}   

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

答案 3 :(得分: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();
    }
}

如果你有其他构造函数,你必须自己定义一个no-arg构造函数,因为如果没有定义其他构造函数,Java只提供一个默认的无参数构造函数。

答案 4 :(得分:1)

这里没有参数构造函数也没有效。由于您按照

覆盖它
public Team(String name, String location) {

} 

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

而不是尝试

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

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

答案 5 :(得分:0)

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

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

如果要创建空的Team对象

,也应定义Team()