尝试返回特定的单元格。用户选择一行,该值将转换为double。 该列始终是3号。这是我到目前为止所做的尝试,但我得到一个错误,说无法将对象转换为双重
numberRow = TOrders.getSelectedRow();
TOrders.getSelectedRow();
subCost = TOrders.getModel().getValueAt(numberRow, 3);
需要帮助!!!
答案 0 :(得分:0)
您正在检索Object而不是double。您需要cast将其设为Double,以便能够将其视为:
subCost = (Double) TOrders.getModel().getValueAt(numberRow, 3);
此外,
TOrders.getSelectedRow();
没有做任何有用的事情。你应该删除这一行。
答案 1 :(得分:0)
TableModel接口的getValueAt()方法返回Object的后代。您的错误消息表明它是一个字符串。因此,您似乎应该将返回的Object引用转换为带有强制转换的String引用。然后使用Double.parseDouble()将该String转换为double。如果字符串不是有效的double,则parseDouble将抛出NumberFormatException:
try {
numberRow = TOrders.getSelectedRow();
String temp = (String) TOrders.getModel().getValueAt(numberRow, 3);
subCost = Double.parseDouble(temp);
}
catch (NumberFormatException e)
{
JOptionPane.showMessageDialog(null, "Item in table was not a valid double - "
+ e.getMessage() );
}
如果您想处理货币数据,您可能希望将其放在BigDecimal中。使用不包含有效十进制数字的String构造BigDecimal会引发NumberFormatException。
try {
numberRow = TOrders.getSelectedRow();
String temp = (String) TOrders.getModel().getValueAt(numberRow, 3);
subCost = new BigDecimal(temp);
}
catch (NumberFormatException e)
{
JOptionPane.showMessageDialog(null,
"Item in table was not a valid decimal number");
}