我是编程新手,所以这对我来说可能是彻底的疏忽。但我可以确认(下面)if标签中的两个值是等价的,但它没有返回我的值。
public static LANGUAGESTRING toLangString(String text) {
for (LANGUAGESTRING lang : LANGUAGESTRING.values()) {
String langStr = lang.toString();
System.out.println(langStr);
System.out.println(text);
if (text == langStr) {
return lang;
}
}
return null;
}
这是打印出来的。这不是我的整个LANGUAGESTRING枚举,但你可以从这里得到重点。它应该返回语言字符串,对吧?看第5行和第6行是一样的吗?即使它正在返回它,它也会打破循环,对吗?
[14:41:45] GodToBelieverPrayerWhenNoItemNeed
[14:41:45] GodToBelieverPrayingWeak
[14:41:45] GodToBelieverPrayerTooSoon
[14:41:45] GodToBelieverPrayingWeak
[14:41:45] GodToBelieverPrayingWeak
[14:41:45] GodToBelieverPrayingWeak
[14:41:45] EnterHolyLandInfoYourGod
[14:41:45] GodToBelieverPrayingWeak
答案 0 :(得分:1)
使用.equals
代替==
。
if(text.equals(langStr))
答案 1 :(得分:1)
应使用字符串equals()
方法代替==
。这是由于==
检查引用相等性(即两个变量是否指向相同的内存地址)。您对内容相等感兴趣(即,如果存储在这些内存地址中的内容相同)