对于循环在退货时不退出

时间:2016-06-22 20:26:48

标签: java minecraft

我是编程新手,所以这对我来说可能是彻底的疏忽。但我可以确认(下面)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

2 个答案:

答案 0 :(得分:1)

使用.equals代替==

if(text.equals(langStr))

答案 1 :(得分:1)

应使用字符串equals()方法代替==。这是由于==检查引用相等性(即两个变量是否指向相同的内存地址)。您对内容相等感兴趣(即,如果存储在这些内存地址中的内容相同)

This post explains this difference in more depth.