繁体   English   中英

Java-找不到符号构造函数

[英]Java - Cannot find symbol constructor

我是Java的新手,如果我的问题很愚蠢,对不起。 我正在从事这项工作,并且我已经阅读了几个小时的主要方法,但是我无法弄清楚。 我把一些代码放在下面。 我可能离这里很远,但是我希望完成的工作是获取启动构造函数的主要方法,但是在编译时出现错误,提示“找不到符号-构造函数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);
}

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

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

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

您的班级中有明确的构造函数

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

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

缺少构造函数时,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");

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

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

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

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

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

问候。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM