如何搜索保存的号码

时间:2018-02-04 19:57:37

标签: java arrays boolean

我想创建一个程序来保存国家/地区代码并搜索国家/地区代码。此外,最多有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"); 
        }
    }
}

3 个答案:

答案 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");
    }
}