当前位置: 首页 > 知识库问答 >
问题:

计算句子中重复单词的总数[重复]

荀博
2023-03-14

我想计算一个句子中重复单词或重复单词的总数。这里我可以打印单词,但不能计算这些单词。

import java.util.*;
public class Duplicate {  
    
    public static void main(String[] args) {  
       
        String input = "Big black bug bit a big black dog on his big black nose";  
        //Scanner scanner = new Scanner(System.in);
         //System.out.println("Enter the sentence");
        
        //String input = scanner.nextLine();
        
        int count; 
        int counter=0;
         
        //Converts the string into lowercase  
        input = input.toLowerCase();  
          
        //Split the string into words using built-in function  
        String words[] = input.split(" ");  
          
        System.out.println("Duplicate words in a given string : ");   
        for(int i = 0; i < words.length; i++) {  
            count = 1;  
            for(int j = i+1; j < words.length; j++) {  
                if(words[i].equals(words[j])) {  
                    count++;  
                    //Set words[j] to 0 to avoid printing visited word  
                    words[j] = "0";  
                    counter=counter+1;
                    
                }  
            }  
              
            //Displays the duplicate word if count is greater than 1  
            if(count > 1 && words[i] != "0")  {
                System.out.println(words[i]);
            }
            
        } 
         
        System.out.println("Total Duplicate words in a given string : " +counter);
}  
}

我期望输出:-

给定字符串中的重复单词:大黑色

给定字符串中的重复单词总数:2

输出如下:

给定字符串中的重复单词:大黑色

给定字符串中的重复单词总数:10

总计数显示为10,而不是2。

共有2个答案

汝吕恭
2023-03-14

对于如下循环,尝试使用HashMap而不是2

public static void main(String[] args) {  

    String input = "Big black bug bit a big black dog on his big black nose";  
    HashMap<String, Integer> dupCount = new HashMap<>();

       //Converts the string into lowercase  
    input = input.toLowerCase();  

    //Split the string into words using built-in function  
    String words[] = input.split(" ");  


    System.out.println("Duplicate words in a given string : ");   
    for(int i = 0; i < words.length; i++) { 
        if(dupCount.containsKey(words[i])){
            int cnt = dupCount.get(words[i]);
            cnt = cnt + 1;
            dupCount.put(words[i], cnt);        
        }else{
            dupCount.put(words[i], 0);
        }
    }

    for(Map.Entry<String, Integer> test : dupCount.entrySet()){
        if(test.getValue() > 1)  {
            System.out.println("Duplicate words in a given string : " +test.getKey() + " : " + test.getValue());
        }
    }
}

在这种情况下,每次发生重复时都会打印最后一条语句,您可以根据需要对其进行修改。

宰父劲
2023-03-14

将增量移动到计数器到这里应该可以工作:

if (count > 1 && !words[i].equals("0")) {
    counter++;
    System.out.println(words[i]);
}

而不是在第二个循环中。现在,每当您发现重复出现时,计数器将递增。当您发现有重复的单词时,在下面移动计数器只会使其递增。

也就是说,通过使用地图来计算每个单词出现的次数,可以简化这种方法。

 类似资料:
  • 给定一个句子,我希望能够数出每个单词中有多少个元音。 示例输入: 示例输出: 我最初的想法是有2个同时循环。第一个循环直到满足EOF以结束程序,第二个(嵌套的)同时循环将运行直到满足空格 (" ") ,同时还对当前单词中的元音求和。一旦遇到空格,它将打印出元音的当前值,第二个同时循环将结束并重新开始(元音计数器重置回0)。 这是我为此编写的代码: 然而,这导致语法错误,我不能找出我的错误。 第6行

  • 问题内容: 我想使用方法来计算一个句子中的单词数。我写了这段代码,但我不太确定为什么它不起作用。无论我写什么,我都只会收到一个单词的数。如果您能告诉我如何修正我写的内容,而不是给我一个完全不同的主意,那就更好了: 问题答案: 您需要阅读整行。代替使用。

  • 我在大学上Java入门课程。我的作业是写一个程序来显示一个句子中1个字母单词的数量,一个句子中2个字母单词的数量...等等。句子是用户输入的。我应该使用一个循环,但不允许使用数组。 然而,现在只是开始,我只是想找出句子第一个单词的字母数。我得到的结果要么是字母数不正确,要么是字符串索引超出范围。 例如,当我输入“这是一个句子”时,它会给我“字符串索引超出范围:4”对此的任何帮助都将不胜感激。

  • 以下是一个练习的说明,我必须解决cs50 pset2可读性问题(从站点粘贴副本): 你的程序应该计算文本中字母、单词和句子的数量。您可以假设字母是从a到z的任何小写字符或从a到z的任何大写字符,由空格分隔的任何字符序列都应算作一个单词,句号、感叹号或问号的任何出现都表示句子的结尾 这些不是完整的说明,只是我有问题的部分。 我知道如何计算课文中的字母数,但我不知道如何计算单词和句子。我试着用谷歌搜索

  • 我试图解决一个问题,但没有成功。 我有两张号码单 我有一张桌子 现在我需要计算多少次从第二个列表的数字后从第一个列表的数字,但我应该只计算一个一个id 在上面的示例表中,结果应该是2 三个匹配的pars,但是因为我们只有两个不同的ID,结果是2而不是3 PAR: 笔记我使用MSSQL 编辑。还有一列确定顺序的日期 Edit2-解决方案 我写这个查询 在这之后,我计划按id分组,每个id只使用一个匹

  • 在过去,我经常通过pandas数据帧计算条件语句,该数据帧将Y/N返回到1/0,然后计算并获得分数。不过,我想学习一种高级方法,用列表中较大的数据集实现计算。 这是我的代码: 输出: 但是这是针对3个列表(a, b, c)的index,但是我需要手动执行列表的其余索引。 如何为给定列表的所有索引自动执行? 当我在完整列表中使用这种格式时: 我得到这样的错误: 会感激任何帮助。