需要有关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