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

Java模块化程序:遍历String数组统计多字符串出现次数(限用JOptionPane)

如何用JOptionPane实现String数组的指定字符串出现次数统计?

嘿,我来帮你搞定这个问题!既然你只能用JOptionPane处理输入输出,那咱们就围绕它来构建整个统计流程,同时适配你模块化程序里的现有数组。下面是具体的实现思路和代码示例:

核心思路

  1. 获取统计目标:通过JOptionPane让用户输入需要统计的多个字符串(用逗号分隔),拆分后得到目标字符串数组。
  2. 初始化统计容器:用HashMap来存储每个目标字符串的出现次数,初始值设为0,这样能高效判断和更新计数。
  3. 遍历原数组统计:逐个检查原数组的元素,如果是我们要统计的目标字符串,就更新对应计数。
  4. 展示统计结果:把统计好的结果整理成易读的文本,再通过JOptionPane弹窗展示。

示例代码实现

假设你的模块化程序里已经有了一个String数组(比如myArray),下面是完整的统计逻辑:

import javax.swing.JOptionPane;
import java.util.HashMap;
import java.util.Map;

public class StringCount {
    public static void main(String[] args) {
        // 这里替换成你模块化程序里的现有数组
        String[] myArray = {"apple", "banana", "apple", "orange", "banana", "apple", "grape"};

        // 1. 获取用户要统计的目标字符串
        String targetInput = JOptionPane.showInputDialog("请输入要统计的字符串,用逗号分隔(例如:apple,banana):");
        if (targetInput == null || targetInput.trim().isEmpty()) {
            JOptionPane.showMessageDialog(null, "请输入有效的目标字符串!");
            return;
        }
        String[] targetStrings = targetInput.split(",");

        // 2. 初始化统计Map,去除目标字符串的前后空格
        HashMap<String, Integer> countMap = new HashMap<>();
        for (String target : targetStrings) {
            String cleanedTarget = target.trim();
            countMap.put(cleanedTarget, 0);
        }

        // 3. 遍历原数组统计次数
        for (String str : myArray) {
            if (countMap.containsKey(str)) {
                countMap.put(str, countMap.get(str) + 1);
            }
        }

        // 4. 整理并展示结果
        StringBuilder resultText = new StringBuilder("指定字符串的出现次数统计:\n");
        for (Map.Entry<String, Integer> entry : countMap.entrySet()) {
            resultText.append("- ").append(entry.getKey()).append(":").append(entry.getValue()).append("次\n");
        }
        JOptionPane.showMessageDialog(null, resultText.toString());
    }
}

关键细节提醒

  • 处理输入空格:对用户输入的目标字符串做trim(),避免因为用户输入了空格(比如apple , banana)导致匹配失败。
  • 空输入判断:如果用户取消输入或者输入空内容,要给出提示并终止程序,避免后续报错。
  • 基础替代方案:如果你还没学过HashMap,也可以用嵌套循环实现(遍历原数组每个元素,再遍历目标数组逐个匹配计数),虽然效率稍低,但逻辑更基础:
    // 替代HashMap的嵌套循环统计方式
    int[] counts = new int[targetStrings.length];
    for (String str : myArray) {
        for (int i = 0; i < targetStrings.length; i++) {
            if (str.equals(targetStrings[i].trim())) {
                counts[i]++;
            }
        }
    }
    // 后续整理结果的逻辑类似,遍历counts数组和targetStrings数组拼接文本
    

这样整个流程完全依赖JOptionPane做交互,同时实现了指定字符串的次数统计,适配你的模块化程序需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:51:50