我正在制作Java作业的饭店点餐系统菜单。我将以程序的形式创建收据,该程序创建一个包含表内容的文本文件。但是,我在执行此操作时遇到了麻烦。我所有的表内容都是字符串。

这是用于导出表内容的代码:

try{
   BufferedWriter bfw = new BufferedWriter(new FileWriter("Data.txt"));
   for(int i = 0 ; i < tableSalesFood.getColumnCount() ; i++){
       bfw.write(tableSalesFood.getColumnName(i));
       bfw.write("\t");
   }

   for (int i = 0 ; i < tableSalesFood.getRowCount(); i++){
       bfw.newLine();
       for(int j = 0 ; j < tableSalesFood.getColumnCount();j++){
          bfw.write((String)(tableSalesFood.getValueAt(i,j)));
          bfw.write("\t");;
       }
   }

   bfw.close();
   }catch(Exception ex){
      ex.printStackTrace();
   }


单击按钮时,程序将返回异常错误:

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

最佳答案

显然是由(String)(tableSalesFood.getValueAt(i,j)引起的,您正在尝试将Integer转换为String。请确保您知道什么是ClassCastException,例如参见此question

您可以通过转换而不是强制转换来修复错误:

Objects.toString(tableSalesFood.getValueAt(i,j), "");


Objectsjava.util包中定义。

10-05 18:28