2016-10-22 3 views
0

Привет, ребята, это код, в котором я пытаюсь сделать Java прочитанным текстовым файлом. У меня есть некоторые значения float, которые я хочу, чтобы программа читала, но она бросает исключение формата номера. Текстовый файл «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 sparated табулятором 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 

не является допустимым значением Integer, следовательно, его неспособность анализировать использование значения как тип данных, соответствующий ему. двойным или плавающим для вашего требования.

т.е. Float.parseFloat(variable)

Смежные вопросы