NumberFormatException:用于输入字符串

时间:2014-10-01 09:46:40

标签: java exception numberformatexception

我试图通过lastModified日期过滤文件搜索程序,使用Epoch值作为比较。

当我尝试执行此操作时,它会给我以下错误:

  

线程中的异常" AWT-EventQueue-0" java.lang.NumberFormatException:对于输入字符串:" 1408350905359"

显然我的变量的初始值是空的,并且我被告知要确保进行验证或异常以使其不是......好吧,是空的。事情是,我很糟糕,不能。我会发布我遇到问题的代码。有人可以帮忙吗?

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{                                        
   String direcdate=direc1.getText();
   String Phrase = (" Pastas/Ficheiros em: '" + direcdate + "  ----- : ' ");

   File folder = new File(direcdate);
   File[] listOfFiles=folder.listFiles();

   for (File listOfFile : listOfFiles)
   {
     SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
     long epoch = System.currentTimeMillis();        

      String str = ultimaalt.getText();

      int q =Integer.valueOf(str);
      long DIAS = q*86400000;
      long currentdate;
      currentdate = epoch - (q*DIAS);
      String lastmodstr;
      lastmodstr = valueOf(listOfFile.lastModified());

      //NAO CONSIGO METER ESTA MERDA A FUNCIONAR
      // PRECISO DUM TRY CATCH EXCEPTION
      // AGORA QUAL?
      // fml.exe

      int lastmodint;           
      lastmodint=Integer.valueOf(lastmodstr);

       if (lastmodint<= currentdate)
       {
         if(listOfFile.isFile())
         {   
           Phrase = (Phrase + " \n -->"
                     + listOfFile.getName ()
                     + "      Ultima alteração:"
                     + sdf.format(listOfFile.lastModified())
                     + ". ");   
        } else if (listOfFile.isDirectory()) {
          Phrase = (Phrase + " \n -->"
                    + listOfFile.getName() 
                    + "(Pasta)" + "     Ultima alteração:" 
                    + sdf.format(listOfFile.lastModified()) 
                    + ". ");
        } else {}
       }
     }

     jTextPane1.setText(Phrase); // TODO add your handling code here:
    }            

编辑:

固定!

答案正在改变:

  

int lastmodint;
            lastmodint = Integer.valueOf(lastmodstr);

  

Long lastmodint;

        lastmodint=Long.valueOf(lastmodstr);

谢谢!

2 个答案:

答案 0 :(得分:0)

您的代码中需要进行简单的更改

<强>替换

int lastmodint;

        lastmodint=Integer.valueOf(lastmodstr);

int lastmodint;

            lastmodint=Integer.parseInt(lastmodstr);

我希望这会对你有所帮助

答案 1 :(得分:0)

好吧,为了不让它变空,抛出异常,就像这样:

String str = ultimaalt.getText();
if (str == null) {
   throw new NullPointerException("No text captured.");
}

if (str.isEmpty()) {
   throw new InvalidStateException("No text captured.");
}

此外,您的值为long,而不是int,因此Long.valueOf()与此相关。