为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

aluckdog 2023-07-28 15:51:39
我想计算句子中重复单词或重复单词的总数。在这里我可以打印单词但无法计算这些单词。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);}  }我期望输出:--给定字符串中的重复单词:big black给定字符串中的重复单词总数:2输出如下:给定字符串中的重复单词:big black给定字符串中的重复单词总数:10总计数显示 10,而不是 2。
查看完整描述

2 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

将增量移动到counter此处应该可以:


if (count > 1 && !words[i].equals("0")) {

    counter++;

    System.out.println(words[i]);

}

而不是在第二个循环中。counter每次您发现另一个重复项时,现在都会增加。counter仅当您发现存在重复单词时,向下移动才会增加它。


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



查看完整回答
反对 回复 2023-07-28
?
波斯汪

TA贡献1811条经验 获得超4个赞

尝试使用 1 个HashMap而不是 2 个 for 循环,如下所示


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-07-28
  • 2 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信