我想创建一个程序来保存国家/地区代码并搜索国家/地区代码。此外,最多有20个计数器用于保存国家/地区代码。我是一个新的java初学者。我想知道编写searchCoutryCode的正确方法是什么 方法是使用数组来搜索保存的国家代码吗?
public static void createCountryCode(String countryName, String countrycode) {
if (nameCounter >= 20) {
System.out.println("Full");
} else {
System.out.println("Saving the number of " + countryName + ":" + countryCode);
}
countryNameRec[countryNameCounter++] = countryName;
countryCounterRec[countryCounter++]= countryCode;
}
public static void searchCoutryCode(String countryName) {
for(int i = 0; i <=20; i++){
if(countryNameRec[i].equals(countryName)){
System.out.println("countryNameRec[i]+ " : "+ coutryCodeRec[i]");
} else {
System.out.println("No records");
}
}
}
答案 0 :(得分:0)
在数组中迭代以找到元素不是一种有效的方法 好吧,因为你只有20个元素,它很可能不会引起一个真正的问题,但是你可能有更多的元素要处理,这种做法除了冗长之外。
使用带有排序数组的dict
或使用item = geocode_result[0]
item['address_components'] # Returns another list
item['formatted_address'] # Returns a string 'Chesapeake, VA 23325, USA'
可能会更好。
请注意,实际上您的binarySearch (Arrays.binarySearch())
并未返回任何内容。
搜索方法必须返回一些东西:它找到的元素或什么都没有。
您可以返回Map
:
searchCoutryCode()
或更好String
以更清洁的方式处理未找到的案例:
public static String searchCoutryCode(String countryName) {
...
}
答案 1 :(得分:0)
我建议您了解地图。它们是一个更智能的数组版本,就像字典一样,“键”就像单词和“值”就像一个定义。可以使用java库中对containsValue()或containsKey()方法的调用来替换整个方法。
但是,如果你想使用数组,我建议你查看作为Java Arrays库一部分的二进制搜索方法。
答案 2 :(得分:0)
此代码假定国家/地区名称是唯一的。在您的代码中,您发送了一条消息,列表大小已满,但无论如何都要添加记录。对于其他人使用更合适的地图推荐的这类问题。
public static HashMap<String,String> countries = new HashMap<>();
public static void createCountryCode(String countryName, String countrycode) {
if (countries.size() >= 20) {
System.out.println("Full");
} else {
System.out.println("Saving the number of " + countryName + ":" + countrycode);
countries.put(countryName,countrycode);
}
}
public static void searchCoutryCode(String countryName) {
String countryCode = countries.get(countryName);
if(countryCode == null){
System.out.println("No records");
}
else{
System.out.println("countryName+ " : "+ countryCode");
}
}