3

我正在尝试将数字文本文件作为双精度数组读取,并且经过各种方法(通常会导致输入格式异常),我得出的结论是,我尝试读取的文本文件与其分隔符不一致。

大多数文本格式是“0.000,0.000”的形式,所以我一直在使用扫描仪和 useDelimiter(",") 来读取每个值。

事实证明(这是一个大的数字文件),一些格式是“0.000 0.000”的形式(我假设在一行的末尾),这当然会产生输入格式异常。

这确实是一个悬而未决的问题,我是一个非常基础的 Java 程序员,所以我想看看是否有任何建议/方法来执行此操作。Scanner 是正确的课程吗?

感谢您的时间!

4

3 回答 3

2

逐行读取文件作为文本。然后将行分成几部分:

String[] parts = line.split("[ ,]");

现在遍历零件并调用Double.parseDouble()每个零件。

于 2013-03-21T13:01:39.160 回答
1

Scanner 允许任何 Java正则表达式模式用作分隔符。通过执行以下操作,您应该能够使用任意数量的分隔符:

scanner.setDelimiter("[,\\s]");  // Will match commas and whitespace
于 2013-03-21T13:06:32.727 回答
0

我想对此发表评论,而不是将其作为单独的答案,但我的声誉太低了。抱歉,亚历克斯。

您提到在不同的实例中使用两个不同的定界字符,而不是将两者组合为单个定界符。您可以在正则表达式中将竖线用作逻辑 OR。

scanner.setDelimiter("[,|\\s]"); //Will match commas or whitespace as appropriate

逐行:

String[] parts = line.split("[,|\\s]"); 
于 2013-03-21T13:10:36.590 回答