我有以下代码行,并且在我的项目上运行klocwork分析时出现以下错误
SV.INT_OVF:来自'br.readLine()'的污染数据'Long.parseLong(...)'用于算术运算,会导致整数溢出或意外结果
我的代码
while (line = br.readLine() != null) {
long timestamp = timescale * Long.parseLong(line.substring(1, line.length()));
}
如何重构此代码以避免可能的溢出
谢谢
答案 0 :(得分:1)
您可以使用BigInteger
来避免溢出。
是否应该是另一个问题。
我将查看这些值的合理范围,然后首先验证您的输入。最广泛的理智值很可能不会产生溢出(或者如果溢出,则必须使用BigInteger)