我现在写一个资料的上传,更新,有一个是价格的字段,我在接口中设置了价格,但是为非必须,但是,下面的一个用Integer.parseInt(price)会在price为空时报错。我该如何解决这个问题呢?
前端 用的是 text的,在接口中,统一用的是String 接收的。其它字段为空时,都不报错,在这个要转换时,为空时,才会报错。
解决办法:我看上边有人也已经说的差不多了,加入非空判断。是可以
遇到这种问题其实最好加个try catch捕获一下,然后再加入你的逻辑
try {
yourprice= Integer.parseInt(price.trim());
} catch (NumberFormatException e) {
System.out.println(e);
}
补充:如果你是安卓的应用代码:
if (!TextUtils.isEmpty(price)) {
}
为空时你将它置为0啊,转换之前判断是否为空,如果是就让它=0
,不是再进行parseInt处理
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
//引入commons-lang3之后直接通过工具类判空再做处理
Integer priceIn = null;
if(StringUtils.isNotBlank(price)){
priceIn = Integer.parseInt(price)
}
给参数给定一个默认值 @RequestParam注解中有个默认值defaultValue,例如 接收的价格没有传值 默认为0 就将defaultValue="0",你这只是判断是否为空,如果为空的时候给定默认值,在后续系统中使用的时候也是一个不错的解决方案。如果只是判断为空的时候正常的数据类型转换。那么这个可能就不太适用了,需要单独在接口参数上进行一个判断。或者在调用的时候进行判断
cn.hutool.core.util
StrUtil.isNotBlank(price) ,其实parseInt/如果不是数字也会报错,完善的话加个判断是否是数字
加个非空的if条件不就行了
给参数给定一个默认值 @RequestParam注解中有个默认值defaultValue=" " 下面在搞个判断