在 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(" ","");
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(" ","");