易小侠 2022-01-25 13:53 采纳率: 93.9%
浏览 56
已结题

用Java写一个switch问题

switch
我们希望编写一个函数,统计一个 List 列表中的数值分布,其中 1 是 small,2 是 middle, 3 是 big,3以上都是 huge 。列表中的数值全部都在 1 到 5之间,编写程序在对象的 small, middle, big, huge 四个字段 保存正确的统计结果

  • 写回答

4条回答 默认 最新

  • CTimet 2022-01-25 14:56
    关注

    emm。就是说,按照你的意思,就是写个方法,遍历一个List列表呗。然后用swich代替if进行判断。保存在对象的字段里那就用隐式参数。OK,顺着这个思路,我们写一个类

    package help.List;
    
    import java.util.Iterator;
    import java.util.List;
    
    public class ListTest
    {
        private int small;
        private int middle;
        private int big;
        private int huge;
    
        public void getSMBN(LinkedList<Integer> smbn)
        {
            Iterator<Integer> iterator = smbn.iterator();
            //一个特殊的值。用来统计总数量
            int quantity = smbn.size();
            while (iterator.hasNext())
            {
                switch (iterator.next())
                {
                    case 1:
                        this.small++;
                        break;
                    case 2:
                        this.middle++;
                        break;
                    case 3:
                        this.big++;
                        break;
                    default:
                        this.huge++;
                        break;
                }
            }
            System.out.println("源List列表中共有small值" + small + "个;");
            System.out.println("middle值" + middle + "个;");
            System.out.println("big值" + big + "个;");
            System.out.println("huge值" + huge + "个.");
            
            //清点数据是否遗漏
            int inventory = small + middle + big + huge;
            if (quantity == inventory)
                System.out.println("源列表共" + quantity + "个值,实际清点数量" + inventory + "个值,数据清点正确!");
            else
                System.out.println("源列表共" + quantity + "个值,实际清点数量" 
                        + inventory + "个值,大约遗漏了" 
                        + (quantity - inventory) + "个值");
        }
    }
    

    现在再写一个测试类测试程序

    package help.List;
    
    import java.util.LinkedList;
    
    public class Test
    {
        public static void main(String[] args)
        {
            LinkedList<Integer> list = new LinkedList<>();
            list.add(1);
            list.add(2);
            list.add(3);
            list.add(2);
            list.add(2);
            list.add(1);
            list.add(4);
            list.add(3);
            ListTest test = new ListTest();
            test.getSMBN(list);
        }
    }
    

    来看运行结果

    img


    可以看到,程序成功清点出来了。不过我并没有使用List类。因为我没有用过这个类。里面很多方法都不一样。不过思路应该还是一样的。你就把几个方法和参数改改应该就能用了

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

报告相同问题?

问题事件

  • 系统已结题 2月4日
  • 已采纳回答 1月27日
  • 创建了问题 1月25日

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)