用java编成,实现从键盘输入一个字符串,统计出现频率最高的字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java编成,实现从键盘输入一个字符串,统计出现频率最高的字符相关的知识,希望对你有一定的参考价值。

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Test 
public static void main(String[] args) 
Scanner in = new Scanner(System.in);
System.out.println("Please enter a string :");
String line = in.nextLine();

Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < line.length(); i++) 
char ch = line.charAt(i);
Integer integer = map.get(ch);
if (integer == null) 
map.put(ch, 1);
 else 
map.put(ch, integer + 1);



int length = line.length();
while (length > 0) 
for (Character c : map.keySet()) 
Integer count = map.get(c);
if (count == length) 
System.out.println("'" + c + "' : " + map.get(c));


length--;


输出:

Please enter a string :
hello world! hello java!
'l' : 5
' ' : 3
'o' : 3
'!' : 2
'a' : 2
'e' : 2
'h' : 2
'r' : 1
'd' : 1
'v' : 1
'w' : 1
'j' : 1

追问

谢谢

追答

哎呀呀,他回答的早是真的,不过他没有实现按出现频率大小顺序输出啊。

追问

你们都是大神

追答

原来是网友采纳,我错怪题主了。

参考技术A import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class Main 

public static void main(String[] args) throws Exception 
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入.....");
char[] arr = in.readLine().toCharArray();
Map<Character,Integer> map = new HashMap<Character,Integer>();
for(int i = 0; i < arr.length; i++)
Integer value = map.get(arr[i]);
if(value == null)
map.put(arr[i], 1);
else
map.put(arr[i], value+1);


System.out.println(map);

//输出的map我没有进行排序,你自己根据map的value排序一下就好了。

追问

谢谢

追答

不客气

参考技术B 一样多都统计?

用JAVA实现找出输入字符串中的出现次数最多的字符及其次数;

通过Map 类实现,通过键值对的方式,可以将输入的字符串的每一个字符,作为键,每个字符出现的次数作为值:如下:

public class Find {
  public static void main(String[] args){
    String scan=new Scanner(System.in).nextLine();//获取键盘上输入的字符串;
    Map<Character,Integer> map = new HashMap<Character,Integer>();//新建一个HashMap对象;
    

      //通过FOR循环,把String的键值存放到map

    for(int i=0;i<scan.length();i++){
      char temp=scan.charAt(i);//通过循环,找到字符串的每一位字符并存入到temp中;
      if(map.containsKey(temp)){//如果map里面有temp这个字符
        map.put(temp, map.get(temp)+1);//把temp的值加1;
      }else{//如果map里面没有temp这个字符,
        map.put(temp, 1);//把temp的值设为1;
    }
}

/*Collection c = map.entrySet();
Iterator it = c.iterator();
Map.Entry<Character, Integer> entry;
while(it.hasNext()){
entry = (Map.Entry<Character, Integer>) it.next();
}
*/
    int maxnum = Collections.max(map.values());//调用Collections类的max方法,获取map的值的集合;并找出最大的那个值;
    Set<Character> set = new HashSet<Character>();//建立一个set对象
    for(Map.Entry<Character, Integer> entry1:map.entrySet()){ //通过集合的循环,把map的值放到entry1里,通过entry1找到值最大的maxnum的key;
        if(entry1.getValue()==maxnum){
           set.add(entry1.getKey());
        }
}

System.out.println("出现次数最多的字母为:"+set+" 最多出现次数为"+maxnum);

}

}

































以上是关于用java编成,实现从键盘输入一个字符串,统计出现频率最高的字符的主要内容,如果未能解决你的问题,请参考以下文章

用python从键盘输入一个字符串,统计其中大写小写字母以及数字的个数?

用java编写实现从键盘输入一个字符串,判断其是不是为浮点数?

.从键盘录入一个字符串并统计指定字符串出现的次数

汇编十道小题

Java编写一个JAVA应用程序,从键盘输入一字符串。把该字符串存入一个文本文件中。

Python中如何从键盘中输入字符串,统计字母,数字,符号和空格的个数?