【问题标题】:Java NumberFormatException ErrorJava NumberFormatException 错误
【发布时间】:2016-10-22 07:52:17
【问题描述】:

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

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)

请帮帮我。谢谢:)

【问题讨论】:

  • 你确定 0 0.25 3 是由制表符而不是空格分隔的吗?
  • 您看不到这里的问题吗?在堆栈跟踪 Integer.parseInt() 中,问题是我们不知道代码中的第 35 行实际上是什么,

标签: java exception error-handling exception-handling


【解决方案1】:
0.25 

不是有效的整数值,因此无法解析值使用 适当的数据类型。根据您的要求加倍或浮动。

Float.parseFloat(variable)

【讨论】:

    【解决方案2】:

    将您的 split 行更改为:

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

    并将您的 for loop 更改为:

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

    【讨论】:

      猜你喜欢
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      相关资源
      最近更新 更多