字符串不能转换为java错误

String cannot be cast to java error

MyButton4不工作,输出显示错误,

Exception in thread"AWT-EventQueue-0"
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer at knapsacproject.Interface.getTableData(Interface.java:198)

它显示了这一行错误,

tableData[i] = (int) model.getValueAt (i,colIndex);

怎么了?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public int[] getTableData(DefaultTableModel model, Integer colIndex) {
    int nRow = model.getRowCount();
    int[] tableData = new int [nRow];

    for(int i = 0; i< nRow; i++) {
        tableData[i] = (int) model.getValueAt (i,colIndex);
    }
    return tableData;
}                                        

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                        
    DefaultTableModel model = (DefaultTableModel)jTable1.getModel();
    int nRow = model.getRowCount();

    algorithm algo = new algorithm(getTableData(model, 1),getTableData(model, 2),
    Integer.parseInt(jTextField1.getText()),Integer.parseInt(jTextField2.getText()),Integer.parseInt(jTextField3.getText()));
    int[] result = algo.getResult();

    for(int i = 0; i < nRow; i++) {
        if(result[i]==1)
            model.setValueAt("take", i , 3);
        else
            model.setValueAt("leave", i, 3);
    }
}


将字符串值赋给int数组时,会出现此错误。

您需要执行Integer.parseInt()来将字符串转换为int。

1
tableData[i] = Integer.parseInt(model.getValueAt (i,colIndex));


您需要使用下面的代码将字符串解析为整数。

1
tableData[i] = Integer.parseInt(model.getValueAt (i,colIndex));


您试图将方法getValueAt (i,colIndex)返回的String值强制转换为int(这是不可能的),因此基本上它给了您一个ClassCastException

您需要使用答案中提到的方法之一将该String值转换为Integer值:

1
tableData[i] = Integer.parseInt(model.getValueAt (i,colIndex));

1
tableData[i] = Integer.valueOf(model.getValueAt (i,colIndex));