当我编译时,我收到错误: 找不到标志 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();
}
}
任何想法如何解决? 非常感谢 英里
答案 0 :(得分:4)
如果在类中显式创建任何构造函数,则编译器不提供默认构造函数。您需要显式创建no-args
构造函数。
如果一个类没有显式声明任何Java编译器 自动提供一个无参数的构造函数,称为默认值 构造函数。此默认构造函数调用类父类 无参数构造函数,如果类没有,则为Object构造函数 其他父母。如果父级没有构造函数(Object确实有一个), 编译器将拒绝该程序。
更新代码 -
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()