public List<Map<String,Object>> getDzxqJcxm(Integer siteid){ List<Map<String,Object>> list = kqSiteBzDao.getDzxqJcxm(siteid); if(list != null && list.size()>0){ String itemvalue=null; for(Map<String,Object> m : list){ itemvalue = kqSiteBzDao.getValueByIdAndMc(siteid,m.get("xmname").toString()); m.put("jcz",itemvalue); //计算超标倍数 if(itemvalue != null && !itemvalue.equals("")){ //如果比标准值大 Float num = Float.parseFloat(itemvalue); if(m.get("value") != null) { int num1 = Integer.parseInt(m.get("value").toString()); if (num > num1) { DecimalFormat df = new DecimalFormat("0.00"); String cbbs = df.format((Float) (num - num1) / num1); m.put("cbbs", cbbs); } else { m.put("cbbs", null); } } } } } return list; }如何解决indexoutofboundexception的问题
时间: 2024-02-10 13:21:19 浏览: 74
IIS7报500.23错误的原因分析及解决方法
IndexOutOfBoundsException通常是由于访问集合或数组中不存在的索引而引起的。在该方法中,有几个可能引起此异常的点:
1. 如果在调用getDzxqJcxm()方法之前,没有检查siteid是否为null,则可能导致list为null。因此,在使用list之前应该检查它是否为null。
2. 在for循环中,m.get("value")可能为null,因此在使用它之前应该先进行null检查。
下面是修改后的代码:
public List<Map<String,Object>> getDzxqJcxm(Integer siteid){
List<Map<String,Object>> list = kqSiteBzDao.getDzxqJcxm(siteid);
if(list != null && list.size()>0){
String itemvalue=null;
for(Map<String,Object> m : list){
itemvalue = kqSiteBzDao.getValueByIdAndMc(siteid,m.get("xmname").toString());
m.put("jcz",itemvalue);
//计算超标倍数
if(itemvalue != null && !itemvalue.equals("")){
//如果比标准值大
Float num = Float.parseFloat(itemvalue);
if(m.get("value") != null) {
int num1 = Integer.parseInt(m.get("value").toString());
if (num > num1) {
DecimalFormat df = new DecimalFormat("0.00");
String cbbs = df.format((Float) (num - num1) / num1);
m.put("cbbs", cbbs);
} else {
m.put("cbbs", null);
}
} else {
m.put("cbbs", null);
}
}
}
}
return list;
}
阅读全文