【问题标题】:Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String.线程“AWT-EventQueue-0”中的异常 java.lang.NumberFormatException:空字符串。
【发布时间】:2011-08-22 08:57:09
【问题描述】:

这是我的代码:

      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 中的异常:空字符串。

在此先感谢....

【问题讨论】:

  • 以后发布完整的stacktrace,它有助于更​​快地发现问题

标签: java


【解决方案1】:

问题出在这行代码:

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

在那里,您尝试从空字符串中创建一个 Double。 Check the documentation 你会看到 NumberFormatException 是预期的行为。因此,您要么必须先检查字符串是否为空,要么实施正确的错误处理。

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 大家好,我检查了两次这种情况仍然得到错误消息
    • 单元格中输入了什么数据?如果字符串不包含可解析的双精度数,则会引发 NumberFormatException。
    • 检查每个单元格的 ONCE 条件(在从中获取 Double 值之前)就足够了。您不需要检查 2 次。
    • 我认为单元格包含空格或“”
    • 这就是你得到异常的原因。你应该在做之前检查单元格的内容来避免这种情况: Double.parseDouble(cells.checkCell(n1,Colno).getValue().toString());
    猜你喜欢
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 2021-12-18
    • 1970-01-01
    相关资源
    最近更新 更多