我得到例外:
Exception in thread "AWT-EventQueue-0" java.util.MissingResourceException: Couldn't find 3-letter country code for CS
at java.util.Locale.getISO3Country(Locale.java:1521)
at Business.CountryList.CountryList(CountryList.java:29)
我这样称呼函数:
countryJComboBox.removeAllItems();
countryJComboBox.addItem(CountryList.CountryList(new String[0]));
类CountryList如下:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Business;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
/**
*
* @author Vivek
*/
public class CountryList {
public static Country CountryList(String[] args) {
List<Country> countries = new ArrayList<>();
Locale[] locales = Locale.getAvailableLocales();
for (Locale locale : locales) {
String iso = locale.getISO3Country();
String code = locale.getCountry();
String name = locale.getDisplayCountry();
if (!"".equals(iso) && !"".equals(code) && !"".equals(name)) {
countries.add(new Country(iso, code, name));
}
}
Collections.sort(countries, new CountryComparator());
Country returnCountry = null;
for (Country country : countries) {
returnCountry = country;
}
return returnCountry;
}
}
class CountryComparator implements Comparator<Country> {
private Comparator comparator;
CountryComparator() {
comparator = Collator.getInstance();
}
@Override
public int compare(Country o1, Country o2) {
return comparator.compare(o1.name, o2.name);
}
}
class Country {
private String iso;
private String code;
public String name;
Country(String iso, String code, String name) {
this.iso = iso;
this.code = code;
this.name = name;
}
@Override
public String toString() {
return iso + " - " + code + " - " + name.toUpperCase();
}
}
请帮我修复例外情况。
答案 0 :(得分:5)
基本上它所使用的语言环境似乎没有3个字母的国家/地区代码。因为你试图忽略那些没有3字母iso代码的国家:
for (Locale locale : locales) {
try {
String iso = locale.getISO3Country();
String code = locale.getCountry();
String name = locale.getDisplayCountry();
if (!"".equals(iso) && !"".equals(code) && !"".equals(name)) {
countries.add(new Country(iso, code, name));
}
catch (MissingResourceException e){
//do nothing
}
}
有关详情,请参阅Java Docs。
答案 1 :(得分:0)
请注意,对我而言,那条线上的国家似乎没有声明......
for (Country country : countries) {
returnCountry = country;
只需声明该变量...... 可能是吗?