控制台输入多个数字,输出次数最多的数中的最大值

需求如标题,挺简单的,大概也就是几个循环的事吧。

但是实现起来并没有一蹴而就,应该是功力还不够。最后用较简洁的方式完成,代码如下:

import java.util.*;

public class Test{
    public double[] getArr(){
        System.out.println("请输入一组数字,使用\",\"隔开,按回车结束");
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();  //得到输入的数字串
        in.close();
        String[] ss = str.split(",");
        double[] dd = new double[ss.length];
        for(int i=0; i<ss.length; i++){
            dd[i] = Double.valueOf(ss[i].trim()); //将数字串转换为double数组
        }
        return dd;
    }
    public Object[] getMaxByCount(double[] dd){
        Map<Integer, Double> map = new HashMap<>(); //用来存放数字出现的次数和数字本身
        int res_count = 0; //用来保存次数的最大值
        Object[] obj = new Object[2];
        StringBuilder sb = new StringBuilder();
        for(int i=0; i<dd.length; i++){
            if(sb.indexOf(i + "") < 0){ //若i为重复的数字,则跳过不处理
                int count = 1;
                for(int j=i+1; j<dd.length; j++){
                    if(dd[i] == dd[j]){
                        count++;    //得到某个数出现的次数
                        sb.append(j+","); //将重复出现的数字的序号拼接到sb字符串中
                    }
                }
                if(map.containsKey(count)){ //若map中已有该次数,则当新得到的数大于已存在的数时,覆盖掉原来的数
                    if(dd[i] > map.get(count))
                    map.put(count, dd[i]);
                }else{
                    map.put(count, dd[i]);
                }
            }
        }
        System.out.println(map);
        Set<Integer> keys = map.keySet();
        for(int key : keys){ //取出最大的次数
            if(key > res_count)
            res_count = key;
        }
        obj[0] = res_count;
        obj[1] = map.get(res_count); //得到最大的次数对应的数
        return obj;
    }
    public static void main(String[] args){
        Test test = new Test();
        double[] dd = test.getArr();
        Object[] res = test.getMaxByCount(dd);
        int count = (int)res[0]; //出现次数最多的数的次数
        double num = (double)res[1];   //出现次数最多中最大的数
        System.out.println("出现次数最多的数中最大的是: "+num+", 出现次数是: "+count);
    }
}

结果演示:

时间: 2024-10-11 01:03:16

控制台输入多个数字,输出次数最多的数中的最大值的相关文章

给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。

ccf认证考试2013年12月第一题 问题描述 给定n个正整数,找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数. 输入的第二行有n个整数s1, s2, -, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n).相邻的数用空格分隔. 输出格式 输出这n个次数中出现次数最多的数.如果这样的数有多个,输出其中最小的一个. 样例输入 6 10 1 10 20 30 20 样例输出 10

程序员面试题目总结--数组(三)【旋转数组的最小数字、旋转数组中查找指定数、两个排序数组所有元素中间值、数组中重复次数最多的数、数组中出现次数超过一半的数】

转!http://blog.csdn.net/dabusideqiang/article/details/38271661 11.求旋转数组的最小数字 题目:输入一个排好序的数组的一个旋转,输出旋转数组的最小元素. 分析:数组的旋转:把一个数组最开始的若干个元素搬到数组的末尾.例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1.这道题最直观的解法并不难.从头到尾遍历数组一次,就能找出最小的元素,时间复杂度显然是O(N).但这个思路没有利用输入数组

出现次数最多的数-CCF模拟

问题描述 给定n个正整数,找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数. 输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n).相邻的数用空格分隔. 输出格式 输出这n个次数中出现次数最多的数.如果这样的数有多个,输出其中最小的一个. 样例输入 6 10 1 10 20 30 20 样例输出 10 #include <iostream>

CCF 201312-1 出现次数最多的数 (水题)

问题描述 给定n个正整数,找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数. 输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n).相邻的数用空格分隔. 输出格式 输出这n个次数中出现次数最多的数.如果这样的数有多个,输出其中最小的一个. 样例输入 6 10 1 10 20 30 20 样例输出 10 析:可以先排序,再挨着算,更新.也可以

数组-10. 求整数序列中出现次数最多的数

数组-10. 求整数序列中出现次数最多的数(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 张彤彧(浙江大学) 本题要求统计一个整型序列中出现次数最多的整数及其出现次数. 输入格式: 输入在一行中给出序列中整数个数N(0<N<=1000),以及N个整数.数字间以空格分隔. 输出格式: 在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔.题目保证这样的数字是唯一的. 输入样例: 10 3 2 -1 5 3 4 3

出现次数最多的数

http://blog.csdn.net/pipisorry/article/details/39434403 问题描述 给定n个正整数,找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数. 输入的第二行有n个整数s1, s2, -, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n).相邻的数用空格分隔. 输出格式 输出这n个次数中出现次数最多的数.如果这样的数有多个,输出其中最小

CCF 出现次数最多的数 201312-1

出现次数最多的数 问题描述 试题编号: 201312-1 试题名称: 出现次数最多的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个正整数,找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数. 输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n).相邻的数用空格分隔. 输出格式 输出这n个次数中出现次数最多

【CCF】出现次数最多的数

问题描述 给定n个正整数,找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数. 输入的第二行有n个整数s1, s2, -, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n).相邻的数用空格分隔. 输出格式 输出这n个次数中出现次数最多的数.如果这样的数有多个,输出其中最小的一个. 样例输入 6 10 1 10 20 30 20 样例输出 10 代码如下: #include <ios

ccf 出现次数最多的数

问题描述 试题编号: 201312-1 试题名称: 出现次数最多的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个正整数,找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数. 输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n).相邻的数用空格分隔. 输出格式 输出这n个次数中出现次数最多的数.如果这样的数