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");