2014-10-01 55 views
-1

我试图通过lastModified日期过滤文件搜索程序,使用Epoch值作为比较。NumberFormatException:对于输入字符串

当我尝试执行此,它给了我下面的错误:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "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); 

谢谢!需要

+1

您的字符串不表示任何“int”值。试试'long',或者'BigInteger'。 – 2014-10-01 09:49:01

+0

谢谢!有效!因为某些原因,我忘记了这个时代的价值通常超过了整个国际门槛! – 2014-10-01 10:03:16

回答

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()会与此有关。

0

只是简单的改变你的代码做

更换

int lastmodint; 

     lastmodint=Integer.valueOf(lastmodstr); 

int lastmodint; 

      lastmodint=Integer.parseInt(lastmodstr); 

我希望这将有助于你

+0

这并没有解决OP的问题。 'valueOf()'方法在内部调用'parseInt()'方法。 – 2014-10-01 09:56:39

+0

OP在这里。我更改了: > int lastmod int; lastmodint = Integer.valueOf(lastmodstr); 至 > long lastmodint; lastmodint = Long.valueOf(lastmodstr); – 2014-10-01 10:06:52

相关问题