用java编写程序输入一个字符串(包含空格),统计其中所有出现过的所有字符,并按照频率高低的顺序排列输出
用户在第一行输入一个字符串,以回车结束输入。【输出形式】程序统计字符串中出现的所有字符,然后按照字符出现频率大小排序输出,频率相同时,按输入顺序输出。输出形式规定为每行输...
用户在第一行输入一个字符串,以回车结束输入。
【输出形式】程序统计字符串中出现的所有字符,然后按照字符出现频率大小排序输出,频率相同时,按输入顺序输出。输出形式规定为每行输出4个字符数据,输出格式为:字符-出现次数。每个字符-出现次数输出中间用一个空格分隔,每行末尾没有空格。程序输出结尾有一个回车。
【样例输入】
The job requires an agile mind.
【样例输出】
#-5 e-4 i-3 r-2
a-2 n-2 T-1 h-1
j-1 o-1 b-1 q-1
u-1 s-1 g-1 l-1
m-1 d-1 .-1 #表示空格(在程序请输出空格,而不是字符“#”,这里只是表示而已。)
样例说明】用户首先输入字符串The job requires an agile mind. 程序统计完毕之后按照每行4个统计结果输出,字符串中有5个空格,所以输出为#-5,#表示空格。字符'b'和'T'出现次数同为1,因为输入时'b'先于'T'输入,所以输出时也先打印'b'的统计信息。 展开
【输出形式】程序统计字符串中出现的所有字符,然后按照字符出现频率大小排序输出,频率相同时,按输入顺序输出。输出形式规定为每行输出4个字符数据,输出格式为:字符-出现次数。每个字符-出现次数输出中间用一个空格分隔,每行末尾没有空格。程序输出结尾有一个回车。
【样例输入】
The job requires an agile mind.
【样例输出】
#-5 e-4 i-3 r-2
a-2 n-2 T-1 h-1
j-1 o-1 b-1 q-1
u-1 s-1 g-1 l-1
m-1 d-1 .-1 #表示空格(在程序请输出空格,而不是字符“#”,这里只是表示而已。)
样例说明】用户首先输入字符串The job requires an agile mind. 程序统计完毕之后按照每行4个统计结果输出,字符串中有5个空格,所以输出为#-5,#表示空格。字符'b'和'T'出现次数同为1,因为输入时'b'先于'T'输入,所以输出时也先打印'b'的统计信息。 展开
1个回答
展开全部
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class Day02_A {
public static void main(String[] args) {
String str="The job requires an agile mind.";
init(str);
}
private static void init(String str) {
char[] arr=str.toCharArray();
LinkedHashMap<Character,Integer> tm=new LinkedHashMap<>();
for (int i = 0; i < arr.length; i++) {
if(tm.containsKey(arr[i])) {
Integer a=tm.get(arr[i]);
a++;
tm.put(arr[i], a);
}else {
tm.put(arr[i],1);
}
}
List<Entry<Character, Integer>> list = new ArrayList<Entry<Character, Integer>>(tm.entrySet());
Collections.sort(list,new Comparator<Map.Entry<Character,Integer>>() {
public int compare(Entry<Character, Integer> o1, Entry<Character, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
for(int i=0;i<list.size();i++) {
Map.Entry<Character, Integer> me=list.get(i);
String key=me.getKey()+"",value=me.getValue()+"";
if(key.equals(" ")) {
key="#";
}
if((i+1)%4!=0) {
System.out.print(key+"-"+value+"\t");
}else {
System.out.println(key+"-"+value);
}
}
}
}
追问
怎么让输出之间只留一个空格。 这些空格太多了
追答
System.out.print(key+"-"+value+"\t");//这个改成下面即可!
System.out.print(key+"-"+value+" ");
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询