我在下面编写了代码,以摆脱大量的 if then else 语句。唯一的问题是,我刚刚发现 Switch 语句不能与字符串一起使用。
是否有解决这个问题的技巧?
谢谢
switch(xpp.getName()) {
case("creature") : attribID = Integer.parseInt(xpp.getAttributeValue(0));
case("name") : elName = xpp.getName(); break;
case("race") : elName = xpp.getName(); break;
case("gender") : elName = xpp.getName(); break;
case("alignment") : elName = xpp.getName(); break;
case("age") : elName = xpp.getName(); break;
case("condition") : elName = xpp.getName(); break;
case("skinColor") : elName = xpp.getName(); break;
case("hairColor") : elName = xpp.getName(); break;
case("size") : elName = xpp.getName(); break;
case("height") : elName = xpp.getName(); break;
case("weight") : elName = xpp.getName(); break;
case("hitPoints") : elName = xpp.getName(); break;
case("armorClass") : elName = xpp.getName(); break;
case("actionPoints") : elName = xpp.getName(); break;
case("magicPoints") : elName = xpp.getName(); break;
case("strength") : elName = xpp.getName(); break;
case("dexterity") : elName = xpp.getName(); break;
case("intelligence") : elName = xpp.getName(); break;
case("weapon") : elName = xpp.getName(); break;
case("armor") : elName = xpp.getName(); break;
case("magicItem") : elName = xpp.getName(); break;
case("attackSpell") : elName = xpp.getName(); break;
case("defenseSpell") : elName = xpp.getName(); break;
case("item1") : elName = xpp.getName(); break;
case("item2") : elName = xpp.getName(); break;
}
最佳答案
作为替代方案,如果您不能直接切换到 Java 7,最简单的方法是用一堆 if else
替换 switch 语句。或者,您可以尝试打开字符串的 hashCode,但我只建议您在确定没有冲突时这样做(不能保证 hashCode() 可以防止冲突!)。最清晰和最简单的解决方案是使用 if else
。它保持可读性并允许您仍然支持旧版本的 Java。
编辑:只有一种情况有所不同!为什么不简单地做:
if (xpp.getName().equals("creature") {
attribID = Integer.parseInt(xpp.getAttributeValue(0));
} else {
elname = xpp.getName();
}
关于java - 如何将 Switch 与字符串一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9435947/