gpt4 book ai didi

Java 从枚举中检索数据

转载 作者:行者123 更新时间:2023-11-30 07:51:24 26 4
gpt4 key购买 nike

我正在开发我的第一个java程序(所以这个问题相对简单)。我开发了某种基本的角色扮演游戏,研究角色的属性。

我的问题是:

  1. 如何从我创建的枚举中检索数据(问题出在字符构造函数中。我需要根据所选字符类从 ClassStats 获取值)?
  2. 我可以用更好的方式存储每个角色类的属性初始值吗?
enum ClassStats {

Fighter(15,14,12,10,9,10), Rogue(12,12,16,14,10,10), Mage(10,10,14,16,14,10), Cleric(12,14,12,13,16,14);

private int strength, constitution, dexterity, intelligence, wisdom, charisma;

ClassStats(int str, int con, int dex, int intel, int wis, int cha){
strength = str;
constitution = con;
dexterity = dex;
intelligence = intel;
wisdom = wis;
charisma = cha;
}

int getStrength(){
return strength;
}

int getConstitution(){
return constitution;
}

int getDexterity(){
return dexterity;
}

int getIntelligence(){
return getIntelligence();
}

int getWisdom(){
return wisdom;
}

int getCharisma(){
return charisma;
}

}
public class Character {

private String Name;
private String Class;
private int Level;
private long XP;
private int HP;
private int currentHp;
/*private int BAB; /*Base attack bonus*/

private int Strength;
private int Constitution;
private int Dexterity;
private int Intelligence;
private int Wisdom;
private int Charisma;

Character(String name, String chracterClass){

Name = name;
Class = chracterClass;
Level = 1;
XP = 0;
HP = CharacterUtil.setHP(chracterClass);
currentHp = HP;
ClassStats cs = null;
Strength = cs.getStrength();
System.out.println("Strength: " + Strength);
Constitution = cs.getConstitution();
Dexterity = cs.getDexterity();
Intelligence = cs.getIntelligence();
Wisdom = cs.getWisdom();
Charisma = cs.getCharisma();

}

}

最佳答案

A) 您可以将枚举传递到构造函数中。

B) 或者,您可以通过 enumClass.valueOf(strValue) 从字符串值获取枚举。

C) 或者,更好的是,您可以有一个工厂类来为您生成不同的默认字符。

此外,这两行没有意义:

ClassStats cs = null;
Strength = cs.getStrength();

如果将其设置为 null,则无法调用该对象的方法。这本质上是您可以从构造函数中传递的字符串表示形式解析枚举的地方,或者如果您选择选项 2,您将已经有一个 ClassStats 变量。

关于Java 从枚举中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33302041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com