You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现:用户输入CSV地址,按州分组城市并统计地址数

解决CSV地址数据的州-城市数量统计问题

需求说明

  • 输入:每行符合area,city,state,pincode格式的CSV地址数据
  • 数据结构:采用Map<String, Map<String, Integer>>,外层键为州名,内层键为城市名,值为该城市的地址统计数量
  • 输出:先打印州名,再依次列出该州下所有城市及对应的地址数量

修正后的完整实现代码

import java.util.*;

public class AddressCounter {
    public static void main(String[] args) {
        // 初始化嵌套Map:州名 -> (城市名 -> 地址数量)
        Map<String, Map<String, Integer>> stateCityStats = new HashMap<>();
        Scanner inputScanner = new Scanner(System.in);

        System.out.println("请输入CSV格式地址(每行1条,输入空行结束):");
        String inputLine;
        while (!(inputLine = inputScanner.nextLine()).isEmpty()) {
            // 分割行数据并去除首尾空格,兼容带空格的输入
            String[] addressParts = inputLine.trim().split(",");
            if (addressParts.length != 4) {
                System.out.println("格式错误,请输入area,city,state,pincode格式内容");
                continue;
            }

            String city = addressParts[1].trim();
            String state = addressParts[2].trim();

            // 自动初始化州对应的城市Map,避免空指针
            stateCityStats.computeIfAbsent(state, k -> new HashMap<>())
                    .put(city, stateCityStats.get(state).getOrDefault(city, 0) + 1);
        }
        inputScanner.close();

        // 按要求输出统计结果
        System.out.println("\n统计结果:");
        for (Map.Entry<String, Map<String, Integer>> stateEntry : stateCityStats.entrySet()) {
            System.out.println("州:" + stateEntry.getKey());
            Map<String, Integer> cityCounts = stateEntry.getValue();
            for (Map.Entry<String, Integer> cityEntry : cityCounts.entrySet()) {
                System.out.println("  城市:" + cityEntry.getKey() + ",地址数量:" + cityEntry.getValue());
            }
        }
    }
}

关键修正点说明

  • 嵌套Map初始化:使用computeIfAbsent方法,当州名首次出现时自动创建对应的城市统计Map,避免手动判空导致的空指针异常
  • 数据清洗:对输入行和分割后的字段做trim()处理,兼容用户输入时带空格的情况
  • 数量累加逻辑:用getOrDefault处理城市首次出现的场景,确保从0开始累加
  • 输入校验:判断分割后的字段数量是否为4,过滤无效输入

内容的提问来源于stack exchange,提问作者Gudu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 21:05:54