2016-10-22 56 views
0

嘿傢伙這是一個代碼,我試圖讓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行實際上是什麼, –

回答

0

將您的split行更改爲:

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

,改變你for loop到:

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

不是有效的整數值,因此它無法解析值使用 appropiate數據類型等。雙倍或浮動您的要求。

Float.parseFloat(variable)

相關問題