在 java 中使用树图查找字符串中字符的频率时出错

Getting Error when finding frequency of characters in string using tree map in java

I am trying to find out the frequency of characters in string using java tree map. Everything is going fine .But extra lin of string is getting added when i am getting output for one particlar case .


import java.awt.Menu;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class Main {
public static void main(String [] args)
{
    Scanner s=new Scanner(System.in);
    System.out.println("Enter the input string");
    String s1=s.nextLine();

    Map<Character,Integer> map=new TreeMap<Character,Integer>();

    for(int i = 0; i < s1.length(); i++){
       char c = s1.charAt(i);
       Integer val = map.get(new Character(c));
       if(val != null){
         map.put(c, new Integer(val + 1));
       }else{
         map.put(c,1);
       }
    }           

    for(Map.Entry<Character,Integer> en:map.entrySet()){
        int count=en.getValue();
        System.out.printf("%c : ",en.getKey());
        for(int i=0;i<count;i++)
        System.out.printf("*");

        System.out.printf("\n");
    }


    }
}

对于输入:Kohli 是比赛的最佳球员

这应该是输出 克:* 一种 : ** C : * 电子:** F : * H : **** 一世 : ** 我:* 米:** 姓名:* o:** 小号:* t : ***

但我得到这个: :****** 克:* 一种 :** C :* 电子:** F :* H :**** 一世 :** 我:* 米:** ñ:* o:** 小号:* t :***

如何解决。

您输入的字符串中有6个空格。这就是你得到这个输出的原因。空格也是一个字符。

如果您想删除这些空格,您可以像这样更新您的代码:

String s1=s.nextLine().replaceAll(" ","");