先贴一个我的遍历map 比较搓啊
Map<String, Map<String, Double>> map = this.getForecastReportFinanceMap();
for(Object m1 : map.keySet()){
map.get(m1);
for(Object m2 : map.get(m1).keySet()){
//map.get(m1).get(m2);
if((map.get(m1).get(m2)) instanceof Double){
continue;
}
else if(!(StringUtils.isNumeric(map.get(m1).get(m2).toString()))){
setMessage("价格必须是数字");
reRenderDesc = "reportListForm";
return false;
}
代码1:使用正则表达式
//使用正则表达式
String regex = "(\\+|-){0,1}(\\d+)([.]?)(\\d*)";
for (Entry<String, Map<String, Double>> entry : forecastReportFinanceMap.entrySet()) {
for (Entry<String, Double> entryValue : entry.getValue().entrySet()) {
String str = entryValue.getValue() + "";
if(!("".equals(str))&&!Pattern.matches(regex,str)){
setMessage("请输入数字");
reRenderDesc = "reportListForm";
return false;
}
}
}
代码2:
for (Entry<String, Map<String, Double>> entry : forecastReportFinanceMap.entrySet()) {
for (Entry<String, Double> entryValue : entry.getValue().entrySet()) {
String str = entryValue.getValue().toString();//+"";
if(entryValue.getValue() instanceof Double){
continue;
}
else if(!StringUtils.isNumeric(str)){
setMessage("请输入数字");
reRenderDesc = "reportListForm";
return false;
}
}
}
这里
String str = entryValue.getValue().toString();
我使用toString()的时候会抛出一个 java.lang.String cannot be cast to java.lang.Double的异常,
而使用 String str = entryValue.getValue()+""; 的时候则没有这个异常,不知道为什么。
不过这段代码只能验证整数。