对于我正在处理的当前文件,我需要将所有的双精度值相加,同时忽略布尔值。虽然直接回答这个问题会很好,但我想知道将来如何忽略某些值的总体方法。
对于文本文件的示例,其公式如下:int“\n”布尔型“\n”int“\n”布尔型,依此类推,共20行(10个int型,10个布尔型)。
我的教授要求我编写的代码要求它是方法形式,而不是测试类形式。
下面是代码:
public double sumWithoutBoolean(File file) {
double sum = 0;
try {
Scanner input = new Scanner(file);
while(input.hasNextBoolean()) {
boolean line2 = input.nextBoolean();
String line = Boolean.toString(line2);
if (line.equalsIgnoreCase("true") || line.equalsIgnoreCase("false")) {
line = "0";
}
while (input.hasNextLine()) {
}
try {
sum += Double.parseDouble(line);
} catch (NumberFormatException e) {
System.out.println("Error Found");
}
}
input.close();
} catch (FileNotFoundException e) {
System.out.println("File Not Found.");
}
return sum;
}
经过运行多个想法,这是一个我已经设法能够运行没有错误,虽然我相信有一个更紧凑的想法。
2条答案
按热度按时间6yjfywim1#
你可以这样做:
gwbalxhn2#
另一个看起来不错的实现可能类似于
这里的概念是,当文件的每一行都有数字时,你就阅读它,并在正则表达式的帮助下检查该行是否是数字,如果是,你就把它加到和中。