2013-01-31 50 views
1

我完全不熟悉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); 
} 
+1

你正在尝试创建一个'Player',但是你没有传入'nickname'或'playerType'。 –

回答

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); 
+0

我想要做的是让程序启动,然后提示用户输入名称和昵称字符串。这不仅仅是玩家和班级“我的昵称”和“玩家类型”的名字? –

+0

好吧,看更新.... – Reimeus

+0

找不到符号级扫描仪。难道我做错了什么? –

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

,并试图调用无参数的构造

Player player = new Player(); 

要么你需要通过在上面的代码参数(或)创建无参数的构造函数。

1

显然使用的是0-arg constructor,当你还没有得到一个: -

Player player = new Player(); 

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

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

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

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

+0

如何使用参数化构造函数创建对象?这就是我所希望的。我想要做的是让程序启动,然后在用户输入字符串之前提示用户输入名称和昵称字符串,而没有任何playerType和昵称的值。 再次,我100%的绿色,所以如果没有任何意义,告诉我:) –

+0

@JarandBoge ..然后首先阅读用户的价值观。将它存储在一些变量中。然后使用参数化构造函数,将这些变量作为参数传递。那不会那么困难。这只是将字符串文字作为参数传递的方式。 –

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

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

您应该使用空字符串(例如,如果你想获得玩家虚拟)

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

,或者你应该给新的播放器实例名称,并输入您要,因此,例如

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

问候。