我在尝试从jTable中的列中获取值时遇到问题并总结它们。这是我到目前为止的代码:
public void saveTable(){
for(int i = 0; i < jTable2.getRowCount(); i++){
int total = 0;
int Amount = (int) jTable2.getValueAt(i, 5);
total = Amount+total;
System.out.println(total);
}
}
但是我一直特别得到ClassCastException错误:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at my.rcsv1.accounting.DraftInvoice.saveTable(DraftInvoice.java:851)
这是指代码行:
int Amount = (int) jTable2.getValueAt(i, 5);
为了让它发挥作用,我需要做些什么?
谢谢!
答案 0 :(得分:2)
int Amount = Integer.parseInt(jTable2.getValueAt(i, 5)+"");
会做的事情
答案 1 :(得分:1)
您正在转换为原始数据类型,您应该进行解析。
试试这个:
int amount = Integer.parseInt(jTable2.getValueAt(i, 5));
此外,您不应该使用大写字母来启动变量名称,例如int Amount
应为int amount
答案 2 :(得分:1)
例外情况表明您在该列中存储了一个字符串。
您可以使用数据模型jTable.getModel()
以更好的方式进行。但就是这样:
int total = 0;
for (int i = 0; i < jTable2.getRowCount(); i++){
int amount = Integer.parseInt((String) jTable2.getValueAt(i, 5));
total += amount;
}
System.out.println(total);
答案 3 :(得分:0)
通过构造函数调用方法
public moneyManager() {
initComponents();
getSum();
table_update();//table gets updated when records added
getSum();
}
方法实现
private void getSum() {
int sum = 0;
for(int i =0;i<jTable1.getRowCount();i++){
sum = sum +Integer.parseInt(jTable1.getValueAt(i, 2).toString());
//here i is the row wise iteration and 2 is the column number of my
calculation attribute
}
//JlableTotal is where I want to display the total
JlableTotal.setText(Integer.toString(sum));
}