Java NumberFormatException错误

问题描述:

嘿家伙这是一个代码,我试图让Java读取文本文件。我有一些浮点值,我希望程序读取,但它是抛出数字格式异常。文本文件“h。 txt“是以ANSI编码的记事本文件。Java NumberFormatException错误

package javaapplication1; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.FileNotFoundException; 
import java.io.FileInputStream; 
import java.io.FileReader; 
import java.io.IOException; 
import java.io.OutputStreamWriter; 
import java.io.Writer; 
import java.io.InputStreamReader; 
import java.io.UnsupportedEncodingException; 
import java.text.NumberFormat; 
import java.util.Locale; 
import java.lang.*; 
public class JavaApplication1 { 

int[][] adj=new int[50][50]; 
String line; 
public JavaApplication1(int[][] adj) { 
    // TODO Auto-generated constructor stub 
    this.adj=adj; 
} 
public void fileinput2() { 
try { 
     BufferedReader file=new BufferedReader(new FileReader("h.txt")); 
     try { 
      while((line=file.readLine())!=null){ 
       String[] s=line.split("\t+") 
            for(int i=0;i<s.length;i++) 
            { 
            float x=Float.valueOf(s[i].trim()); 
            System.out.print(x+" "); 
            } 
            System.out.println(); 
       } 
     } catch (NumberFormatException | IOException e) { 

      e.printStackTrace(); 
     } 

    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

public static void main(String[] args) { 

     { 
    int[][] adj=new int[50][50]; 
JavaApplication1 m=new JavaApplication1(adj); 
m.fileinput2();   
} 
} 
} 

} 

的h.txt是一个文本文件,其第一行是

0 0.25 3 

的Java是给我一个NumberFormatException异常: -

java.lang.NumberFormatException: For input string: "0.25" 
at  java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Integer.parseInt(Integer.java:580) 
at java.lang.Integer.parseInt(Integer.java:615) 
at javaapplication1.JavaApplication1.fileinput2(JavaApplication1.java:35) 
at javaapplication1.JavaApplication1.main(JavaApplication1.java:70) 

请帮我out.Thanks :)

+0

你肯定0 0.25 3由制表符ANS不是空格分拆结构? –

+0

你不能在这里看到问题吗?在stacktrace中,Integer.parseInt(),问题是我们不知道代码中的第35行实际上是什么, –

将您的split行更改为:

String[] s = line.split(" "); 

,改变你for loop到:

for (String string : s) { 
    if (!string.isEmpty()) { 
     float x = Float.parseFloat(string); 
     System.out.print(x + " "); 
    } 
} 

0.25 

不是有效的整数值,因此它无法解析值使用 appropiate数据类型等。双倍或浮动您的要求。

Float.parseFloat(variable)