怎么给int或者Integer赋一个初始值

新手求大佬指导,图一程序执行到红线框内就报空指针异常,然后我帮图二int改为Integer后,程序能执行导线红线框,此时“num就变成”null了,需要怎么赋值或者写一个什么判断不为空时候

图片说明

图二

图片说明

public ModelAndView goApplyIndexPage(HttpServletRequest request) {
        ModelAndView view = new ModelAndView();
        try {
            view.addObject("module_id", request.getParameter("module_id"));
            OrgStation orgStation = orgStationService.getStationByOrgId(super.getCurUserInfo().getCurrDeptId());
            if (orgStation != null) {
                view.addObject("stationId", orgStation.getStationId());
            }
            HttpSession session = request.getSession();
            String dispatchType = (String) session.getAttribute("dispatchType");
            List<DiaStationVisiting> list = visitingService.selectWaitHandleByUserId(super.getCurUserInfo().getUserid());
            String sumKey = "";
            initMap(request);
            if (visitingMap != null && visitingMap.size() > 0) {
                if (list.size() > 0 && list != null) {
                    String applyTime = list.get(0).getApplyTime();
                    Integer num = 0;
                    System.out.println(super.getCurUserInfo().getUserid() + "_" + applyTime);
                    System.out.println(visitingMap.get("min"));
                    num = visitingMap.get(super.getCurUserInfo().getUserid() + "_" + applyTime);
                    sumKey = super.getCurUserInfo().getUserid() + "_" + applyTime;
                    view.addObject("sortNum", 0);
                    sumKey = super.getCurUserInfo().getUserid() + "_" + list.get(0).getApplyTime();
                    int currentNum = visitingMap.get(sumKey);
                    int min = visitingMap.get("min") == null ? currentNum : visitingMap.get("min");
                    System.out.println(min);
                    String subCount = num - min == 0 ? "0": String.valueOf(num - min);
                    view.addObject("subCount", subCount);
                } else {
                    view.addObject("subCount", visitingMap.get("max"));
                }
            } else {
                List<DiaStationVisiting> listVisiting = visitingService.selectWaitHandle(super.getCurUserInfo().getCurrOrgId(), dispatchType, null);
                for (int i = 0; i < listVisiting.size(); i++) {
                    int hasExit = listVisiting.get(i).getHasExit();
                    String key = hasExit == 0 ? listVisiting.get(i).getApplyInId() : listVisiting.get(i).getApplyOutId();
                    if (listVisiting.get(i).getSortNum() != null) {
                        int sortNum = listVisiting.get(i).getSortNum();
                        key += "_" + listVisiting.get(i).getApplyTime();
                        sumKey = key;
                        if (visitingMap.get("min") == null) {
                            visitingMap.put("min", sortNum);
                        }
                        visitingMap.put("max", sortNum);
                        visitingMap.put(key, sortNum);
                    }
                }
                if (listVisiting.size() == 0) {
                    view.addObject("subCount", "");
                } else {
                    view.addObject("sortNum", visitingMap.get(sumKey));
                    int min = visitingMap.get("min") == null ? 0 : visitingMap.get("min");
                    int currentNum = visitingMap.get(sumKey) == null ? 0 : visitingMap.get(sumKey);
                    view.addObject("subCount", currentNum - min);

                }
            }

            view.addObject("userId", super.getCurUserInfo().getUserid());

            //view.addObject("count", visitingService.selectWaitHandle(super.getCurUserInfo().getCurrOrgId(), dispatchType, null).size());
            view.setViewName(BaseController.BACKGROUND_PATH + "/dispatchlog/station_visiting/applyVisiting");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return view;
    }

https://www.cnblogs.com/boycelee/p/5820266.html

Integer是Int的包装类,Int是八种基本数据类型之一,区别及用法可以网上了解下,但这不是关键,关键的是传入的key获取的value是否为数字,即visitingMap.get(sumKey);中visitingMap可以debugger看看有哪些key/value,传入的sumKey对应的值是什么? 如果为null或者为非数字就会报错

1.可以加上类似判断key是否存在,如if(sumKey.equals(key))
2.确保key对应的vaule是数字

for (String key : visitingMap.keySet()) {
    if(sumKey.equals(key))
   {
     //这里为业务逻辑
  }
}

visitingMap.get(super.getCurUserInfo().getUserid() + "_" + applyTime);//这里取值没取到所以报空指针,这是根本原因

如果程序这里本身存在无值的情况可以这么判断:

num==null?0:num;//这是三元运算,效率高,比if else简洁