验证是否为数字的代码

先贴一个我的遍历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()+""; 的时候则没有这个异常,不知道为什么。
不过这段代码只能验证整数。
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值