需要有关numberformat异常错误的帮助

时间:2011-05-05 05:55:25

标签: java

import java.lang.System;
import java.io.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class SubMat {
    public static void main(String[] args) throws IOException {

        File file = new File("file1.txt");
        List<double[]> list = new ArrayList<double[]>();
       Scanner scanner = new Scanner(file).useDelimiter("\n");



        while (scanner.hasNext()) {     
            String[] values = scanner.next().trim().split(" "); 
             double[] floats = new double[values.length];
             for (int i = 0; i < values.length; i++) {
                 floats[i] = Double.parseDouble(values[i]);
                 }
                 list.add(floats);
                 } 
                 double[][] values = new double[list.size()][];
                 for (int i = 0; i < list.size(); i++) {
                     values[i] = list.get(i);
                     for (int j = 0; j < values[i].length; j++) {
                         System.out.printf(values[i][j]+"  ");

                         }
                         System.out.println();
                         }


                  int row =values.length;
                 int col=values[0].length;


    }}

2 个答案:

答案 0 :(得分:0)

可能是你在这一行得到了这个例外

floats[i] = Double.parseDouble(values[i]);

只需打印值[i] 可能是null或包含任何字符或特殊字符。

答案 1 :(得分:0)

快速修复:替换此行

floats[i] = Double.parseDouble(values[i]);

try {
   floats[i] = Double.parseDouble(values[i]);
} catch (NumberFormatException nfe) {
   System.out.println("String can't be parsed to a float value: " + values[i]);
   System.exit();  // brutal escape, because if you just continue, you'll have an
                   // illegal value (0.0) in your array
}

注意 - 如果您想忽略非法输入并继续,那么您将不得不使用列表而不是数组。


添加 - 问题可能与this on有关,我们在那里看到了一个示例输入文件。如果这是违规输入,则可能是小数点有问题,这是该示例文件中的“点”,在其他区域设置中可能不同。

如何在系统{@ 1}}或81.0上写入十进制数?如果你对十进制分隔符使用不同的符号,这里是另一个快速修复(丑陋,但更容易解释语言环境概念......):

81,0