我在将公共类变量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
语句中分配一个字段。