我正在尝试将数字的文本文件作为双数组读取并在各种方法之后(通常导致输入格式异常)我得出的结论是我试图读取的文本文件与它的不一致限界。
大多数文本格式的格式为“0.000,0.000”,因此我一直使用Scanner和useDelimiter(“,”)来读取每个值。
事实证明(这是一个很大的数字文件),有些格式的格式是“0.000 0.000”(在我假设的行的末尾),这当然会产生输入格式异常。
这是一个悬而未决的问题,我是一个非常基本的Java程序员,所以我想知道是否有任何建议/方法来执行此操作。扫描仪是正确的类吗?
感谢您的时间!
答案 0 :(得分:2)
逐行读取文件。然后将线分成几部分:
String[] parts = line.split("[ ,]");
现在迭代各个部分并为每个部分调用Double.parseDouble()
。
答案 1 :(得分:1)
扫描程序允许任何Java Regex Pattern作为分隔符。您可以通过执行以下操作来使用任意数量的分隔符:
scanner.setDelimiter("[,\\s]"); // Will match commas and whitespace
答案 2 :(得分:0)
我想对此进行评论,而不是单独回答,但我的声誉太低了。道歉,亚历克斯。
您提到在不同实例中使用两个不同的分隔字符,而不是两者作为单个分隔符的组合。 您可以在正则表达式中将竖线用作逻辑OR。
scanner.setDelimiter("[,|\\s]"); //Will match commas or whitespace as appropriate
逐行:
String[] parts = line.split("[,|\\s]");