Java 声纳错误:装箱的值被取消装箱,然后再次重新装箱
我无法确定已装箱的值在何处被取消装箱,然后再次取消装箱 在下面的示例代码中重新加载。有人能帮我进来吗 修复这个声纳错误Java 声纳错误:装箱的值被取消装箱,然后再次重新装箱,java,sonarqube,boxing,unboxing,Java,Sonarqube,Boxing,Unboxing,我无法确定已装箱的值在何处被取消装箱,然后再次取消装箱 在下面的示例代码中重新加载。有人能帮我进来吗 修复这个声纳错误 List floatList=new ArrayList(); 浮动100=100F; 浮点零=0F; String[]stringFloatValues=新字符串[]{1.2,3.44,5.66}; 用于(字符串stringFloat:stringFloatValues){ 浮点值=numberrutils.isParsable(stringFloat) 浮点数。浮点数(st
List floatList=new ArrayList();
浮动100=100F;
浮点零=0F;
String[]stringFloatValues=新字符串[]{1.2,3.44,5.66};
用于(字符串stringFloat:stringFloatValues){
浮点值=numberrutils.isParsable(stringFloat)
浮点数。浮点数(stringFloat)/100
:zero;//声纳在此语句中显示问题
浮动列表。添加(值);
}
List floatList=new ArrayList();
浮动100=100F;
浮点零=0F;
字符串[]stringFloatValues=新字符串[]{“1.2”、“3.44”、“5.66”};
用于(字符串stringFloat:stringFloatValues){
浮点值=numberrutils.isParsable(stringFloat)
浮点数。解析浮点数(stringFloat)/100
:zero;//声纳在此语句中显示问题
浮动列表。添加(值);
}
在计算时,进行除法(/
),将所有内容保持为基本类型float
。
Float.valueOf
将给出一个盒装浮点,需要将其解封为Float,以及100
。如上所述,当parseFloat
给出一个float时,得到的float值将被装箱到add
“sonar showing issue in this statement”中。该语句中float
类型的每个表达式都应该是一个float
:float.valueOf(stringFloat)=>float.parseFloat(…)
,Float-hundle=>Float-hundle
,Float-zero=>Float-zero
。但是,用易于理解的值定义变量也没有什么意义:只需使用100F
而不是100
等等。实际上,我在前面自己实现了float而不是float。但问题仍然没有解决。所以,我想我应该只使用Float,因为如果我使用Float,那么自动装箱会将结果存储到value变量中。所以我把那个语句转换成浮点值。
List<Float> floatList = new ArrayList<>();
float hundred = 100F;
float zero = 0F;
String[] stringFloatValues = new String[]{"1.2", "3.44", "5.66"};
for (String stringFloat: stringFloatValues) {
float value = NumberUtils.isParsable(stringFloat)
? Float.parseFloat(stringFloat) / hundred
: zero; // sonar showing issue in this statement
floatList.add(value);
}