2401_88084319 2025-06-14 13:48 采纳率: 80%
浏览 6
已结题

这个问题应该怎么解决?

使用HashSet实现一个文本分析程序,能够读取一段文本,统计并显示文本中所有不重复的单词

  • 写回答

5条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-06-14 13:50
    关注

    让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供。

    如果还有疑问可以点击头像关注私信或评论。如果答案让您满意,请采纳、点赞、关注,非常感谢!

    使用HashSet实现文本分析程序

    要使用HashSet实现一个文本分析程序来统计并显示文本中所有不重复的单词,可以按照以下步骤进行:

    Java实现方案

    import java.util.HashSet;
    import java.util.Scanner;
    import java.util.Set;
    
    
    public class TextAnalyzer {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入要分析的文本:");
            String text = scanner.nextLine();
            
            // 使用HashSet存储不重复的单词
            Set<String> uniqueWords = new HashSet<>();
            
            // 分割文本为单词(简单分割,实际可能需要更复杂的处理)
            String[] words = text.split("[\\s,.!?;:]+");
            
            // 将单词添加到HashSet中(自动去重)
            for (String word : words) {
                if (!word.isEmpty()) {
                    uniqueWords.add(word.toLowerCase()); // 忽略大小写
                }
            }
            
            // 输出结果
            System.out.println("\n文本中的不重复单词:");
            System.out.println("共找到 " + uniqueWords.size() + " 个不重复单词");
            System.out.println("单词列表:");
            for (String word : uniqueWords) {
                System.out.println(word);
            }
        }
    }
    

    程序执行流程

    开始

    程序说明

    1. HashSet特性:HashSet会自动去除重复元素,因此非常适合用于统计不重复单词
    2. 文本分割:使用正则表达式[\\s,.!?;:]+分割文本,可以处理空格和常见标点符号
    3. 大小写处理:将所有单词转换为小写,确保"Hello"和"hello"被视为同一个单词
    4. 空字符串过滤:检查分割后的单词是否为空,避免统计空字符串

    扩展建议

    如果需要更精确的文本分析,可以考虑以下改进:

    1. 使用更复杂的正则表达式处理各种边界情况
    2. 添加停用词过滤(如"the", "a", "an"等常见但不重要的词)
    3. 统计单词出现频率(需要使用HashMap而不是HashSet)
    4. 支持从文件读取文本而不仅是控制台输入

    示例运行

    输入:

    Hello world! This is a test. Hello again, world.
    

    输出:

    文本中的不重复单词:
    共找到 6 个不重复单词
    单词列表:
    a
    world
    is
    this
    again
    hello
    test
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 6月22日
  • 已采纳回答 6月14日
  • 创建了问题 6月14日