随意输入一串字符串,显示出现次数最多的字符,以及出现次数

时间:2023-01-04 12:26:48
随意输入一串字符串,显示出现次数最多的字符,以及出现次数随意输入一串字符串,显示出现次数最多的字符,以及出现次数
 1 import java.util.Scanner;
 2 /*随意输入一串字符串,将其中出现次数最多的一个字符找出来,并且说出最多的次数是多少。
 3 * 例如:wwwwfdaslfsalfkjlkghljjjjjjjjj输出结果为出现最多的字符是j,出现了10次
 4 * */
 5 public class test4 {
 6     public static void main(String[] args) throws Exception{
 7         /*控制控制台,输入一串字符串*/
 8         Scanner sc=new Scanner(System.in);
 9         System.out.print("请输入一个字符串:");
10         String str=sc.next();
11 
12         char[] chars=str.toCharArray();//将字符串转化成数组了
13         int[] ar=new int[127];//askii码为128个,可是数组下标从0开始的。
14         /*将chars数组中的字符(字符串转化过来的数组)赋给变量c,c作为数组ar的下标,c将自动转化为相对应的askii码值
15         (代表着在数组ar中的位置)
16         * chars数组中的相同字符出现的个数,个数值就为相对应于数组ar位置(c位置)的值(出现一次就为1,两次就为2,
17         * 没有相对应的位置则为0);
18         * */
19         for(char c:chars){
20             ar[c]++;
21         }
22         int index=0;//出现最多次数的下标(下标反转化成askii码即为相对应的字符);
23         int max=0; //出现过最多的次数(在ar元素里,也就是数组中最大的那个元素);
24         //遍历ar数组,前面的for循环,已经决定了ar数组中各个元素的值。
25         for(int i=0;i<ar.length;i++){
26            //找到ar数组中最大的元素值,以及对应的最大元素值的下标;
27             if(ar[i]>max){
28                 max=ar[i];
29                 index=i;
30             }
31         }
32         //(char)index,把index强制性转化成字符类型,即将下标反转化成askii码即为相对应的字符。
33         System.out.print("出现过最多的字符是:"+(char)index+"出现最多的次数为:"+max);
34         }
35 }
View Code