我正在使用Java读取CSV文件并使用给定的项目进行一些数据分析。我读到的几个数据点是一堆不同的数字,范围从-999到999.我想将这些数字相互比较,所以我首先将String转换为整数。 我得到的问题是CSV文件使用数字(1-)后面的负号保存负数。这会抛出NullFormatException。我觉得有一个简单的方法,我忽略了。任何帮助都会很棒。
随机数据是{1,19-,20-,7,8}我需要{1,-19,-20,7,8}
int[] nnaOH = new int[x];
int[] nwOH = new int[x];
int[] nuaOH = new int[x];
for (int z = 1; z < x; z++){
nnaOH[z] = Integer.parseInt(naOH[z]);
nwOH[z] = Integer.parseInt(wOH[z]);
nuaOH[z] = Integer.parseInt(uaOH[z]);
}
答案 0 :(得分:2)
您可以使用DecimalFormat以自定义格式解析整数:
import java.text.DecimalFormat;
import java.text.ParseException;
public class DecimalFormatTest {
public static void main(String[] args) throws ParseException {
DecimalFormat decimalFormat = new DecimalFormat("#;#-");
System.out.println(decimalFormat.parse("123-").intValue());
System.out.println(decimalFormat.parse("321").intValue());
}
}
输出:
-123
321
答案 1 :(得分:0)
尝试这样的事情。它将在结束时检测连字符并在解析数字之前将其删除,并将其设置为负值。
private int parseInt(String str) {
if (str.endsWith("-")) {
str = str.substring(0, str.length() - 1);
return -Integer.parseInt(str);
} else {
return Integer.parseInt(str);
}
}