2

我对Java完全陌生,所以如果我的问题很愚蠢,我很抱歉。我正在做这个任务,我已经阅读了几个小时的主要方法,但我就是想不通。我把我的一些代码放在下面。我可能离这里很远,但我希望完成的是让 main 方法启动构造函数,但是当我编译时,我得到一个错误,说“找不到符号 - 构造函数 Player”。现在,我猜这与构造函数的字符串参数有关,但我全力以赴。如果有人能对此有所了解,可能是非常简单的问题,我会很高兴:)

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);
}
4

5 回答 5

3

Player没有无参数构造函数,你可以使用:

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);
于 2013-01-31T21:39:16.747 回答
1

显然,您正在使用0-arg constructor,当您还没有时:-

Player player = new Player();

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

因此,您可以0-arg constructor像这样添加一个:-

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

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

于 2013-01-31T21:39:00.080 回答
0

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

你的类中有显式构造函数

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

并尝试调用无参数构造函数

 Player player = new Player();

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

于 2013-01-31T21:38:44.217 回答
0

当缺少构造函数时,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");
于 2013-01-31T21:51:35.210 回答
0

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

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

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

或者您应该为新玩家实例指定您想要的名称和类型,例如

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

问候。

于 2013-01-31T22:00:37.600 回答