用Java编写一个程序对用户输入的任意一组字符如{3,1,4,7,2,1,1,2,2}输出其中出现次数最多的字符 5

对用户输入的任意一组字符如{3,1,4,7,2,1,1,2,2}输出其中出现次数最多的字符,并显示其出现次数。如果有多个字符出现次数均为最大且相等,则输出最先出现的那个字... 对用户输入的任意一组字符如{3,1,4,7,2,1,1,2,2}输出其中出现次数最多的字符,并显示其出现次数。如果有多个字符出现次数均为最大且相等,则输出最先出现的那个字符和它出现的次数。例如,上面输入的字符集合中,“1”和“2”都出现了3次,均为最大出现次数,因为“1”先出现,则输出字符“1”和它出现的次数3次。
要求:使用分支、循环结构语句实现。
展开
 我来答
pardream941026
2019-01-10 · TA获得超过8217个赞
知道大有可为答主
回答量:4602
采纳率:89%
帮助的人:1342万
展开全部

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

public class A {
  public static void main(String argvs[]) {
      String line;
      Scanner sc = new Scanner(System.in);

      while(sc.hasNextLine()) {
          line = sc.nextLine();
          if (line.length()==0) break;

          String []s = line.split(",");
          int a[] = {0,0,0,0,0,0,0,0,0,0};

          for (String i: s) {
              a[Integer.valueOf(i)] ++;
          }
          int p = 0, max = a[0];
          for (int i=1;i<10;i++) {
              if (max<a[i]) {
                  p = i;
                  max = a[i];
              }
          }
          System.out.printf("出现次数最多的字符是:%c, 次数是%d\n", 0x30 + p, max);
      }

      sc.close();
  }
}
午夜屠猪男9527
2019-01-11 · TA获得超过173个赞
知道小有建树答主
回答量:150
采纳率:66%
帮助的人:40.6万
展开全部

实现的方法有很多,以下是一次遍历就能实现的方法

    public static void main(String[] args) {
//        以什么格式输入就用什么方法解析数据
//        String line;
//        Scanner sc = new Scanner(System.in);
//        line = sc.nextLine();
//        String[] split = line.split(",");
        Integer[] array = {15,1,2,5,1,3,5,4,12,15};//要操作的数组
        System.out.println(  getMostInteger( array ) );
//        sc.close();
    }

    public static String getMostInteger( Integer[] arrayMath ){
        //key保存出现过的数字,value保存形式为 下标_出现次数长度的字符。
        Map<Integer , String> m = new HashMap<>();
        int max = 1;//保存最大出现的次数
        int minIndex = 0;//保存最大数的下标
        for( int i = 0 ; i < arrayMath.length ; i ++ ){
            if( m.containsKey( arrayMath[i] ) ){
                m.put( arrayMath[i] , m.get( arrayMath[i] ) + 1 );
                String[] s = m.get(arrayMath[i]).split("_");//将索引和出现次数分离
                int length = s[1].length();//获取出现次数
                if( length > max ){
                    max = length;
                    minIndex = Integer.parseInt( s[0] );
                }else if( length == max ){
                    if( Integer.parseInt( s[0] ) < minIndex ){
                        minIndex = Integer.parseInt( s[0] );
                    }
                }
            }else {
                m.put( arrayMath[i] , i + "_" + 1 );
            }
        }
        String result = "出现次数最多的是" + arrayMath[minIndex] + "出现的次数为" + max;
        return result;
    }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-01-10
展开全部
用一个map存,key 存字符 ,遍历这组字符,key不存在就存(key,0),如果key已经存在了就value++ ,遍历完了,之后就看那个value大就行,至于取什么就简单了。
追问
麻烦写个程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式