方法抛出NumberFormatException它不应该到目前为止正常工作

时间:2012-10-31 16:12:03

标签: java numberformatexception

当我转换的字符串是一个int

时,我似乎无法弄清楚为什么它会使NFE失效

[代码]

 public void setCurrentTransferRate(){
    try{
        long startTime = System.currentTimeMillis();  
        String[] command = {"/bin/sh", "-c", "ifconfig " + interface_name + " | grep -oP     'RX bytes:[0-9]{1,11}'"};
        String[] command1 = {"/bin/sh", "-c", "ifconfig " + interface_name + " | grep -oP 'TX bytes:[0-9]{1,11}'"};
        Process child = Runtime.getRuntime().exec(command);
        Process child1 = Runtime.getRuntime().exec(command1);
        BufferedReader r = new BufferedReader(new InputStreamReader(child.getInputStream()));       //i prwti metrisi twn RX kai TX bytes
        BufferedReader r1 = new BufferedReader(new InputStreamReader(child1.getInputStream()));
        String temp = r.readLine();
        temp = temp.replace("RX bytes:","");   
        String temp1 = r1.readLine();
        temp1 = temp1.replace("TX bytes:","");  
        r.close();              
        r1.close();
        int x = Integer.parseInt(temp);         
        int y = Integer.parseInt(temp1); 
    }catch(IOException e){e.printStackTrace();}        
    catch(InterruptedException e){e.printStackTrace();}
   }[/code]

产生错误的字符串是temp

我收到错误

[代码]

 Exception in thread "Thread-0" java.lang.NumberFormatException: For input string:  "3262469144"
  at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
  at java.lang.Integer.parseInt(Integer.java:495)
  at java.lang.Integer.parseInt(Integer.java:527)
  at askisi1.General.setCurrentTransferRate(General.java:187)
  at askisi1.General.<init>(General.java:27) 
  at askisi1.mainThread.run(mainThread.java:17)
  at java.lang.Thread.run(Thread.java:722)[/code]

我真的可以在这个上使用一双新鲜的眼睛

2 个答案:

答案 0 :(得分:9)

整数的最大正值为Integer.MAX_VALUE which is 2,147,483,647。你可以用一个长的代替:

long x = Long.parseLong(temp);

它应该可以解决您的问题(如果您的所有数字都小于Long.MAX_VALUE or 9,223,372,036,854,775,807)。

答案 1 :(得分:4)

3262469144对于int来说太大了!