0

所以我正在制作一个游戏,玩家的技能伤害由他们的技能等级和武器掌握程度决定。这两个值存储在一个 XML 文档中,我使用 DOM 来检索这些值,并尝试将它们的总和打印到控制台。

public class Damage {

    public String skillName = "Bash"; //name of the skill

    Xml config = new Xml("C:/character.xml","config");//part of the XML retrieving
    Xml version = config.child("Character");//another part of the XML retrieving

    int mastery = version.integer("Mastery"); //mastery of the skill
    int skillLevel = version.integer("skillName");//skill level 
    int skillDamage = mastery + skillLevel; //adding the two values together

public static void main(String[] args) {    
    System.out.println(skillDamage);
}

}

当我运行这段代码时,它告诉我在静态 Main 方法中不能有非静态变量。但是,当我将静态标记放在变量的 int 之前时,结果为 0。

我的问题是:我怎样才能使变量静态但仍然产生两个 XML 值的总和?我可以以某种方式从 XML 中收集非静态数据,使其成为静态数据,然后使用它吗?

4

4 回答 4

2

尝试

System.out.println(new Damage().skillDamage);

因为您需要一个非静态类变量的实例

于 2014-03-17T00:16:27.953 回答
2

如果你想使用它的非静态变量/成员,你需要首先创建你的 Damage 类的实例。把你的主要方法是这样的:

public static void main(String[] args) {    
    Damage dmg = new Damage();

    System.out.println(dmg.skillDamage);
}
于 2014-03-17T00:16:51.300 回答
2

我不认为你希望变量是静态的。

1) 使技能伤害成为public int

2)然后,只需在您的 main 方法中创建您的对象:

Damage d = new Damage();
System.out.println(d.skillDamage);

最好将 SkillDamage 封装在一个方法中,例如

public int getSkillDamage(){...}
于 2014-03-17T00:16:55.783 回答
1

想象一下你有课cow。您可以创建该类的实例,例如bertamilka。这意味着,你有两只牛,它们的行为是基于 class 的cow

如果你定义static它的意思,它就是static它的class,因此你不能为每头奶牛定义特定的动作。

你应该有一个新的类,例如“GameEngine”,你应该有你需要的所有东西,你应该用类似的东西创建它:GameEngine ge = new GameEngine();然后使用类似的方法ge.readXML();

于 2014-03-17T00:18:43.553 回答