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

时间:2011-08-22 08:57:09

标签: java

这是我的代码:

      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);                                                                                   

我正在尝试检查Sr no是否按顺序排列。如果没有空字符串“”,它工作正常。对于空字符串,它会抛出

线程中的异常“AWT-EventQueue-0”java.lang.NumberFormatException:empty String。

提前致谢....

2 个答案:

答案 0 :(得分:3)

问题在于这行代码:

Double.parseDouble(cells.checkCell(n1,Colno).getValue().toString());

你尝试用空字符串制作一个Double。 Check the documentation您将看到NumberFormatException是预期的行为。因此,您必须首先检查String是否为空或执行正确的错误处理。

这里是来自Double.parseDouble(...)方法的API的引用:

  

抛出:NumberFormatException - 如果字符串不包含   可解析的双倍。

答案 1 :(得分:0)

通过使用实用程序方法更好地处理这些情况。

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

}