2013-06-27 71 views
0

固定代码,并在最后仍显示错误。其中public void displayCharacterDetails()是。错误:期望的类,委托,枚举,接口或结构

public class Character 
{ 
    private string char_name; 
    private string char_descr; 
    private byte char_level; 
    private byte char_attack; 
    private byte char_defence; 
    private bool char_defeat; 

    public Character(string name, string desc, byte level, byte attack, byte defence, bool defeat) 
    { 
     char_name = name; 
     char_descr = ""; 
     char_level = level; 
     char_attack = attack; 
     char_defence = defence; 
     char_defeat = defeat; 
    } 

    public string GetCharacterName() 
    { 
     return char_name; 
    } 

    public string GetCharacterDescription() 
    { 
     return char_descr; 
    } 

    public void SetCharacterDescription(string descr) 
    { 
     char_descr = descr; 
    } 

    public byte GetCharLevel() 
    { 
     return char_level; 
    } 

    public byte GetCharacterAttack() 
    { 
     return char_attack; 
    } 



    public byte GetCharacterDefence() 
    { 

     return char_defence; 

    } 

    public void resetCharacter(string name, string descr, byte level, byte attack, byte defence, bool defeat) 
    { 
     char_name = name; 
     char_descr = ""; 
     char_level = level; 
     char_attack = attack; 
     char_defence = defence; 
     char_defeat = defeat; 
    } 

    public void displayCharacterDetails() 

    { 

System.out.println("Character name: " + char_name); 

System.out.println("Character description" + char_descr); 

System.out.println("Character Level, Attack, Defence: " + char_level + " ,"+ char_attack + " ,"+ char_defence); 
    } 

} 
+0

看起来像C#,为什么标签java? – sanbhat

+1

您必须从ctor签名中删除尾部';' –

+0

@sanbhat - 对我来说看起来像java,因为它清楚地表明了Java,而不是C#编码标准......也许试图直接将代码从一个拷贝粘贴到另一个? –

回答

2

替换为第一行:

public Character(string char_name, string char_desc, byte char_level, byte char_attack, byte char_defence, bool char_defeat) 

从方法声明删除;

而且,你在这里缺少一个右括号:

public byte getCharacterAttack() 

{ 

而且也,你不能名称,如私有字段的方法。

您有一个名为char_level(如this.char_level在构造函数中看到的)领域,并与这里的相同名称的方法:

public byte char_level() 

{ 

return char_level; 

} 

重命名字段或方法来解决。

最后,在您的构造函数中,您的参数名为lkike byte char_level,但是您的参数this.char_level = level;。用this.char_level = char_level;代替每个参数,或者仅调用每个参数byte level


所以基本上你应该有这样的:

public class Character 
{ 
    private string char_name; 
    private string char_descr; 
    private byte char_level; 
    private byte char_attack; 
    private byte char_defence; 
    private bool char_defeat; 

    public Character(string name, string desc, byte level, byte attack, byte defence, 
        bool defeat) 
    { 
     char_name = name; 
     char_descr = ""; 
     char_level = level; 
     char_attack = attack; 
     char_defence = defence; 
     char_defeat = defeat; 
    } 

    public string GetCharacterName() 
    { 
     return char_name; 
    } 

    public string GetCharacterDescription() 
    { 
     return char_descr; 
    } 

    public void SetCharacterDescription(string descr) 
    { 
     char_descr = descr; 
    } 

    public byte GetCharLevel() 
    { 
     return char_level; 
    } 

    public byte GetCharacterAttack() 
    { 
     return char_attack; 
    } 
} 

我改名的方法遵循C#约定。我还删除了this关键字,这些参数名称不需要。也请避免在你的留置权之间放置太多空格,这很难阅读。


或者你可以简单地使用C#属性:

public class Character 
{ 
    public string Name { get; set; } 
    public string Descr { get; set; } 
    public byte Level { get; set; } 
    public byte Attack { get; set; } 
    public byte Defence { get; set; } 
    public bool Defeat { get; set; } 
{ 

,并创建新的角色是这样的:

Character character = new Character { Name = "the name", Descr = "the descr" } //etc. 
+0

我明白了......但它仍然显示出同样的错误。 –

+0

@Cookiex VillageLife试试最后添加的代码块,你可能忽略了你制作的一个gorillions。这里的课程编译得很好。如果没有,请检查您的命名空间括号。 –

2

末删除分号;

public Character(string char_name, string char_desc, byte char_level, 
byte char_attack, 
byte char_defence, bool char_defeat); //<< - remove the semicolon 
+0

仍然显示我错误寿。 –

0
public Character(string char_name, string char_desc, byte char_level, 
    byte char_attack, byte char_defence, bool char_defeat); 

是不是你声明构造。你想这样的:

public Character(string char_name, string char_desc, byte char_level, 
    byte char_attack, byte char_defence, bool char_defeat) 
{ 
    ... 
} 

通知去除分号;

0

你的任务看反了,如果你传递一个名为char_name参数,它看起来像你有一个名为名称的类领域,构造函数中的代码行应该是this.name = char_name;您的设置方法中存在同样的问题。

相关问题