需要有关numberformat异常错误的帮助吗 导入java.lang.System; 导入java.io.*; 导入java.io.File; 导入java.io.IOException; 导入java.util.ArrayList; 导入java.util.List; 导入java.util.Scanner; 公共级潜艇{ 公共静态void main(字符串[]args)引发IOException{ File File=新文件(“file1.txt”); 列表=新的ArrayList(); Scanner Scanner=新的扫描仪(文件).useDelimiter(“\n”); while(scanner.hasNext()){ 字符串[]值=scanner.next().trim().split(“”); double[]floats=新的double[values.length]; 对于(int i=0;i

需要有关numberformat异常错误的帮助吗 导入java.lang.System; 导入java.io.*; 导入java.io.File; 导入java.io.IOException; 导入java.util.ArrayList; 导入java.util.List; 导入java.util.Scanner; 公共级潜艇{ 公共静态void main(字符串[]args)引发IOException{ File File=新文件(“file1.txt”); 列表=新的ArrayList(); Scanner Scanner=新的扫描仪(文件).useDelimiter(“\n”); while(scanner.hasNext()){ 字符串[]值=scanner.next().trim().split(“”); double[]floats=新的double[values.length]; 对于(int i=0;i,java,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)

可能是您在这一行中遇到了此异常

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;


    }}

只需打印值[i],它可能为空或包含任何字符或特殊字符。

快速修复:替换此行

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

注意-如果要忽略非法输入并继续,则必须使用列表而不是数组


添加-问题可能与相关,我们在这里看到一个示例输入文件。如果这是有问题的输入,那么小数点可能有问题,小数点在该示例文件中是一个“点”,在其他地区可能不同

如何在系统中写入十进制数,
81.0
81,0
?如果您对十进制分隔符使用不同的符号,下面是另一个快速修复方法(非常难看,但比解释区域设置概念更容易…):


向我们展示
file1.txt中的内容。向我们展示您的代码不会解释NFE。真正的问题是:字符串看起来像什么?在调用例程之前,请尝试将参数打印到parseDouble。还有,这是你真正的代码吗?您似乎将
值作为
字符串[]
,然后将另一个值作为
双[]
。这不是答案。这是对问题所在的猜测。@Ted-没有任何问题要回答。这是代码中唯一可以引发这种异常的地方。这不是猜测,因为NumberFormatException只在解析过程中出现,而Raghav只在一个位置解析字符串location@Andreas-这篇文章的标题似乎暗示了一个问题,“怎么了?”错误的是它抛出NumberFormatException,并且只在解析字符串行抛出。
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
}
floats[i] = Double.parseDouble(values[i].replace('.', ',');
            // assuming you need a comma here to parse floats