Java – 找不到符号构造函数

我是Java的新手,所以如果我的问题很愚蠢,我很抱歉。 我正在完成这项任务,现在我已经阅读了几个小时的主要方法,但我无法弄明白。 我在下面放了一些代码。 我可能会离开这里,但我希望完成的是获取主方法来启动构造函数,但是当我编译时,我得到一个错误,说“找不到符号 – 构造函数播放器”。 现在,我猜测这与构造函数的字符串参数有关,但我全力以赴。 如果有人能够对此有所了解,可能是非常简单的问题,我会非常高兴:)

public class Player { private String nick; private String type; private int health; public static void main(String[] args) { Player player = new Player(); player.print(); } public Player(String nickName, String playerType) { nick = nickName; type = playerType; health = 100; System.out.println("Welcome " + nick +" the " + type + ". I hope you are ready for an adventure!"); } public void print() { System.out.println("Name: " + nick); System.out.println("Class: " + type); System.out.println("Remanining Health: " + health); } 

Player没有no-arg构造函数,你可以使用:

 Player player = new Player("My Nickname", "Player Type"); 

如果您希望提示用户输入Player参数,您可以这样阅读:

 Scanner scanner = new Scanner(System.in); System.out.print("Enter Player Name:"); String nickName = scanner.nextLine(); System.out.print("Enter Player Type:"); String playerType = scanner.nextLine(); Player player = new Player(nickName, playerType); 

很明显,当你还没有使用0-arg constructor时:

 Player player = new Player(); 

请注意,在类中提供参数化构造函数时,编译器不会添加默认构造函数。 如果您正在使用它,则必须手动添加一个0-arg构造函数。

所以,要么你可以添加一个0-arg constructor : –

 public Player() { this.nick = ""; this.type = ""; this.health = -1; } 

或者,使用参数化构造函数来创建对象。

当您的类显式定义构造函数时 ,将不会创建隐式的无参数构造函数。

你的class级中有明确的构造函数

 public Player(String nickName, String playerType) { nick = nickName; type = playerType; health = 100; System.out.println("Welcome " + nick +" the " + type + ". I hope you are ready for an adventure!"); } 

并尝试调用no-arg构造函数

  Player player = new Player(); 

您需要在上面的代码中传递参数(或)创建no-arg构造函数。

你在main()方法中尝试做的是创建一个新的Player对象。 但问题是你必须使用你实现的构造函数( Player(String, String) )但你使用的构造函数没有任何参数( Player() )。

你应该使用空字符串(例如,如果你想让一个玩家假人)

 Player player = new Player("",""); 

或者您应该为新的播放器实例提供您想要的名称和类型,例如

 Player player = new Player("flashdrive2049","Player"); 

问候。

当一个construtor缺失时,java会创建一个默认构造函数,这个构造函数只是调用超类。 当你定义一个显式构造函数时,java不会创建一个。 所以你可以在你的类中定义一个默认构造函数,例如

 public Player() { nick = "abc"; type = "type"; health = 100; System.out.println("Welcome " + nick +" the " + type + ". I hope you are ready for an adventure!"); } 

或修改代码以调用您定义的构造函数。

  Player player = new Player("nick","type");