“线程中的异常”;AWT-EventQueue-0“;java.lang.NumberFormatException:空字符串。

“线程中的异常”;AWT-EventQueue-0“;java.lang.NumberFormatException:空字符串。,java,Java,这是我的代码: Workbook workbook = new Workbook(); workbook.open(filename); Worksheet worksheet = workbook.getWorksheets().getSheet(sheetno); Cells cells=worksheet.getCells(); int num=cells.getMaxDataRow(); int

这是我的代码:

      Workbook workbook = new Workbook();
        workbook.open(filename);
        Worksheet worksheet = workbook.getWorksheets().getSheet(sheetno);
        Cells cells=worksheet.getCells();
        int num=cells.getMaxDataRow();
        int num1=cells.getMaxDataColumn();
        int OCount=1;
                     for (int n1=startpos+1;n1<endpos;n1++)
         {   if (cells.checkCell(n1, Colno).getValue()==null )
                       {         Cell cell=cells.getCell(n1,Colno);
                                Style style = cells.getCell( n1,Colno).getStyle();
                                style.setColor(Color.TEAL);
                                cell.setStyle(style);
                       } else if(cells.checkCell(n1, Colno).getValue().toString().length()==0) { Cell cell=cells.getCell(n1,Colno);
                                Style style = cells.getCell( n1,Colno).getStyle();
                                style.setColor(Color.TEAL);
                                cell.setStyle(style); } else{ double intCounter = Double.parseDouble(cells.checkCell(n1,Colno).getValue().toString());
                          System.out.println(cells.checkCell(n1,Colno).getValue().toString());
                          if(intCounter!=Count){
                                       Cell cell=cells.getCell(n1,Colno);
                                        Style style = cells.getCell( n1,Colno).getStyle();
                                        style.setColor(Color.YELLOW);
                                        cell.setStyle(style);
                                  }
                              }
                  Count=Count+1;

             } workbook.save("C:\\output.xls",FileFormatType.EXCEL97TO2003);                                                                                   
Workbook工作簿=新工作簿();
工作簿。打开(文件名);
工作表=workbook.getWorksheets().getSheet(sheetno);
Cells Cells=工作表.getCells();
int num=cells.getMaxDataRow();
int num1=cells.getMaxDataColumn();
int-OCount=1;

对于(int n1=startpos+1;n1而言,问题在于这行代码:

Double.parseDouble(cells.checkCell(n1,Colno).getValue().toString());
在这里,您尝试将空字符串转换为Double。您将看到NumberFormatException是预期的行为。因此,您必须首先检查字符串是否为空,或者执行正确的错误处理

这里引用API中的方法Double.parseDouble(…):

抛出:
NumberFormatException
-如果字符串不包含 可分双精度


最好使用实用的方法来处理这些情况

private Double getCorrectedDouble(CellValues... ){
  //check and handle empty fields
  //return new Double(0) if the target is empty 

}

您好,我正在检查此条件两次,仍然收到错误消息msgwhat data输入到单元格中?如果字符串不包含可解析的双精度,则会引发NumberFormatException。为每个单元格检查一次条件(在从中获取双精度值之前)足够了。您不需要检查两次。我认为单元格中包含空格或“”,这就是为什么会出现异常。您应该通过在执行以下操作之前检查单元格的内容来避免这种情况:Double.parseDouble(cells.checkCell(n1,Colno.getValue().toString());将来发布完整的stacktrace,这有助于更快地发现问题