qq_38692022 2018-11-04 13:05 采纳率: 70%
浏览 1760
已采纳

java 用数组解决发奖金问题

过年了,村里要庆祝。村长说,村里有一笔钱作为奖金,让每个人写一个纸条上来,谁写的数目与奖金最接近,就算中,这笔奖金就归谁,如果多人猜中,则平分。编写程序,算算都有哪些人得到奖金?多少?

            这个能用数组写一个程序给我吗  想看看成品 自己搞不明白。。
  • 写回答

5条回答 默认 最新

  • threenewbee 2018-11-04 14:06
    关注
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Arrays;
    
    class Q707984 {
        public static void main(String[] args) {
            int award = 100;
            String[] people = { "a", "b", "c", "d", "e", "f", "g", "h" };
            Integer[] guess = { 75, 70, 80, 120, 100, 110, 100, 45 };
    
            Integer[] ordered = new Integer[people.length];
            for (int i = 0; i < ordered.length; i++) ordered[i] = i;
            Arrays.sort(ordered, new Comparator<Integer>() {
                @Override
                public int compare(Integer a, Integer b) {
                    int x = guess[a] - award > 0 ? guess[a] - award : award - guess[a];
                    int y = guess[b] - award > 0 ? guess[b] - award : award - guess[b];
                    return x - y;
                }
            });
            int maxp = 0;
            int i = 0;
            while (guess[ordered[i++]] == award) maxp++;
            if (maxp <= 1)
                System.out.println(people[ordered[0]] + "一人得奖" + award + "元。");
            else
            {
                for (i = 0; i < maxp; i++)
                    System.out.print(people[ordered[i]] + " ");
                System.out.println("共同得奖" + award / (float)(maxp) + "元。");
            }
        }
    }
    

    图片说明

    如果多人一样,但是都有误差,也平分,那么
    int i = 0;
    while (guess[ordered[i++]] == award) maxp++;
    修改为
    int i = 1;
    while (guess[ordered[i++]] == guess[0]) maxp++;

    如果问题得到解决,请点我回答左上角的采纳,谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器