来自 JTable ,我尝试从[行1到行的末尾]获取每列的值(字符串),并计算值的总和如下:
final ArrayList<String>ValuesList = new ArrayList<String>();
final int nb = myTable.getRowCount();
int sum=0;
for (int i = 1; i < nb; i++)
{
String columnValue = myTable.getColumnValue(i, columnName);
sum=sum+Integer.parseInt(columnValue);
ValuesList .add(columnValue);
}
但我得到了:
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
答案 0 :(得分:4)
表格中至少有一个空单元格。
这是一个建议:
try {
sum += Integer.parseInt(columnValue);
} catch (NumberFormatException nfe) {
// the cell is either empty or not an integer number
// will be treated as zero (0)
}
注意,没有为getColumnValue(int i, String name)
定义方法javax.swing.JTable
。如果您使用JTable
的子类,则错误也可能在该类/方法中:它可能返回空字符串而不是单元格值。
答案 1 :(得分:2)
在使用parseInst
调用转换之前检查null /空字符串。
if (columnValue != null && !columnValue.isEmpty())
sum=sum+Integer.parseInt(columnValue);
我不确定确切的语法,因此请在使用之前进行验证。
答案 2 :(得分:2)
我想您需要将空的 String 或null值转换为零。
所以你需要在获得 String 值时修剪空格,然后检查字符串是否为空。
以下是您的代码应该是什么样的
final ArrayList<String>ValuesList = new ArrayList<String>();
final int nb = myTable.getRowCount();
int sum=0;
String columnValue = "";
for (int i = 1; i < nb; i++)
{
columnValue = myTable.getColumnValue(i, columnName).trim();
if (!columnValue.isEmpty()) {
sum=sum+Integer.parseInt(columnValue);
}
ValuesList.add(columnValue);
}
答案 3 :(得分:1)
如果columnValue
为空(""
),则无法解析它。在这种情况下,只需跳过该列,即
if( columnValue != null || columnValue.length() > 0 ) {
//parse and add here
}
请注意,为了以防万一,我添加了对null的检查,如果myTable.getColumnValue(...)
保证永远不会返回null,则可能不需要它。
另请注意,您也可以尝试处理其他情况,具体取决于表中可能包含的值。如果允许使用" "
或一般字母数字值等空白字符串,则还需要考虑这一点。
最后,为什么你的值存储为字符串,如果它们实际上是数字?为什么不立即将它们存储为Integer
个对象?
答案 4 :(得分:1)
如果空字符串在您的情况下意味着0,您可以在之前检查:
if (!columnValue.equals(""))
sum=sum+Integer.parseInt(columnValue);
甚至更好:
if(!columnValue.isEmpty())
sum=sum+Integer.parseInt(columnValue);
答案 5 :(得分:0)
空字符串无法转换为int。如果要将其视为0,请添加相应的if语句。
答案 6 :(得分:0)
编译器告诉您的是您尝试将空字符串""
转换为int
。所以你可能想检查你是否正在转换实际代表整数的字符串!