我在将公共类变量mCountryCode声明为String的这段代码中出错。

 for (mCountryCode : isoCountryCodes) {
     locale = new Locale("", mCountryCode);
     if(locale.getDisplayCountry().equals(mSpinner.getSelectedItem())) {
         mCountryCode = locale.getCountry();
         break;
     }
 }


如果我改用for (String mCountryCode : isoCountryCodes),则错误将消失,但我无法在mCountryCode行后维持break;字符串值。

最佳答案

是的,enhanced for statement不能那样工作。它总是声明一个新变量。

您可以使用:

for (String tmp : isoCountryCodes) {
    mCountryCode = tmp;
    ...
}


...虽然坦率地说这是一件很奇怪的事情。在我看来,您并不是真的想将每个值都分配给mCountryCode,而只是希望将其分配给:

for (String candidate : isoCountryCodes) {
    Locale locale = new Locale("", candidate);
    if (locale.getDisplayCountry().equals(mSpinner.getSelectedItem())) {
        mCountryCode = candidate;
        break;
    }
}


请注意,这不会分配给现有的locale变量,而是在每次迭代中声明一个新变量。几乎可以肯定这是一个更好的主意...如果需要,您可以始终在if语句中分配一个字段。

10-07 12:52