- 时间:2022-09-01 01:29 编辑: 来源: 阅读:291
- 扫一扫,手机访问
摘要:从源代码角度分析BigDecimal初始化错误
<免费源码>
错误信息项Gosn解析错误,错误信息如下 Java。lang . numberformatexception:bad offset/length:offset = 0 len = 0In。长度= 0。仔细搜索后发现是BigDecimal报错。下面的BigDecimal是初始化时抛出错误的代码(部分代码)。 public BigDecimal(char[] in,int offset,int len){ int begin = offset;//要复制的第一个索引int last = offset+(len-1);//要复制的最后一个索引字符串scaleString//scale StringBuilder unscaled buffer的缓冲区;//未缩放值long newScale的缓冲区;//新的小数位数if(in = = null){ throw new NullPointerException(" in = = null ");} if((last & gt;= in . length)| |(offset & lt;0)| |(len & lt;= 0)| |(last & lt;0)){ throw new numberformatexception("错误的偏移量/长度:offset ="+offset+"len ="+len+"in。长度= "+英寸。length)}}什么情况下会报错?如果((last >:= in . length)| |(offset & lt;0)| |(len & lt;= 0)| |(last & lt;0)){ throw new NumberFormatException("错误的偏移量/长度:offset = "+offset+" len = "+len+" in . length = "+in . length));}什么样的字符串会抛出错误?我曾经在我的项目中用一个字符串值初始化BigDecimal。 BigDecimal的构造函数如下(字符串类型的输入参数) public BigDecimal(String val){ this(val . tochararray(),0,val . length());}当我们传入一个String类型的参数时,它会被转换成一个char数组,然后调用我们贴在顶部的构造函数来构建BigDecimal。 参数字符串为空时会出现Last=-1,如果符合抛出异常的逻辑就会抛出异常。