我是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);
}
答案 0 :(得分:3)
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);
答案 1 :(得分:1)
显然,当你没有0-arg constructor
时,你正在使用{ - 1}}: -
Player player = new Player();
请注意,在类中提供参数化构造函数时,编译器不会添加默认构造函数。如果您正在使用它,则必须手动添加一个0-arg构造函数。
因此,您可以添加一个0-arg constructor
: -
public Player() {
this.nick = "";
this.type = "";
this.health = -1;
}
或使用参数化构造函数创建对象。
答案 2 :(得分:0)
当您的类明确定义constructor时,将不会创建隐式的无参数构造函数。
您的班级中有明确的构造函数
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构造函数。
答案 3 :(得分:0)
默认构造函数是由java在缺少construtor时创建的,这个construtor只是调用超类。当你定义一个显式的构造函数时,java不会创建一个。因此,您可以在类中定义一个默认构造函数 e.g。
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");
答案 4 :(得分:0)
您在main()
- 方法中尝试做的是创建一个新的Player对象。但问题是您必须使用您实现的构造函数(Player(String, String)
),但是您使用的构造函数没有任何参数(Player()
)。
你应该使用空字符串(例如,如果你想让玩家虚拟)
Player player = new Player("","");
或者您应该为新玩家实例提供您想要的名称和类型,例如
Player player = new Player("flashdrive2049","Player");
问候。