Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“线程中的异常”;AWT-EventQueue-0“;java.lang.ClassCastException:无法将类java.lang.Integer转换为类java.lang.String_Java_Swing_Jtable_Opencsv - Fatal编程技术网

“线程中的异常”;AWT-EventQueue-0“;java.lang.ClassCastException:无法将类java.lang.Integer转换为类java.lang.String

“线程中的异常”;AWT-EventQueue-0“;java.lang.ClassCastException:无法将类java.lang.Integer转换为类java.lang.String,java,swing,jtable,opencsv,Java,Swing,Jtable,Opencsv,我使用OpenCSV jar将JTable数据写入CSV文件。除非从表数据中读取数据,否则一切正常。无论何时我选择第一排,它都能完美地工作。但当我选择多行时,它给出了标题中提到的例外情况 代码如下: DefaultTableModel tableModel = (DefaultTableModel) jTable1.getModel(); int rows = Integer.parseInt((String)jTextField8.getText());

我使用OpenCSV jar将
JTable
数据写入CSV文件。除非从表数据中读取数据,否则一切正常。无论何时我选择第一排,它都能完美地工作。但当我选择多行时,它给出了标题中提到的例外情况

代码如下:

        DefaultTableModel tableModel = (DefaultTableModel) jTable1.getModel();
        int rows = Integer.parseInt((String)jTextField8.getText());
        String fileName = jTextField11.getText()+".csv";
        File file = new File("/Users/startelelogic/Desktop/fileName");
        if (jTable1.isEditing()){
            jTable1.getCellEditor().stopCellEditing();
        }
        try{
            FileWriter outputFile = new FileWriter(fileName);
            CSVWriter writer = new CSVWriter(outputFile);
            //  Adding Header to csv File
            String header[] = {"Sr. No.","CM","Liters"};
            writer.writeNext(header);
            //  Adding data to csv
            System.out.println("Rows \t:"+rows);
            for(int i=0; i<rows; i++){
                String[] data = new String[3];
                for(int j=0; j< tableModel.getColumnCount(); j++){
                    data[j] = (String)tableModel.getValueAt(i, j);
                }
                writer.writeNext(data);
                writer.close();
            }
            JOptionPane.showMessageDialog(null, "Table Data Written successfully!");
        }catch(IOException ex){
            JOptionPane.showMessageDialog(null, "FileWriting error");
            ex.printStackTrace();
        }
DefaultTableModel tableModel=(DefaultTableModel)jTable1.getModel();
int rows=Integer.parseInt((字符串)jTextField8.getText());
字符串文件名=jTextField11.getText()+“.csv”;
File File=新文件(“/Users/startelelogic/Desktop/fileName”);
if(jTable1.isEditing()){
jTable1.getCellEditor().stopCellEditing();
}
试一试{
FileWriter outputFile=新的FileWriter(文件名);
CSVWriter writer=新的CSVWriter(输出文件);
//向csv文件添加头文件
字符串头[]={“序号”,“厘米”,“升”};
writer.writeNext(标题);
//向csv添加数据
System.out.println(“行\t:+行);
对于(int i=0;i
java.lang.ClassCastException:无法将类java.lang.Integer转换为类java.lang.String

错误消息告诉您问题所在。不能将整数对象设置为字符串对象

data[j] = (String)tableModel.getValueAt(i, j);
上面的语句假设表中的所有数据都是String的实例

相反,您可以使用:

data[j] = tableModel.getValueAt(i, j).toString();
现在,数据数组将包含每个对象的字符串表示形式