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 }