假定一个文本文件中包含未指定个数的分数,用空格分开。编写一个Java程序,提示用户输入文件名称,然后从文件中读入分数(分子和分母),并且显示它们的和和平均值。
时间: 2024-03-03 20:48:38 浏览: 186
好的,我可以帮你解决这个问题。以下是一个Java程序的示例代码,它可以读取指定文件中的分数(分子和分母),计算它们的总和和平均值,并将结果输出到控制台。你可以将此代码复制到你的Java开发环境中,然后进行编译和运行。
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FractionCalculator {
public static void main(String[] args) {
// 提示用户输入文件名
System.out.print("请输入包含分数的文件名:");
String fileName = System.console().readLine();
// 读取文件中的分数
try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
String line;
int sumNumerator = 0;
int sumDenominator = 0;
while ((line = br.readLine()) != null) {
String[] fractions = line.trim().split("\\s+");
for (String fraction : fractions) {
String[] parts = fraction.split("/");
int numerator = Integer.parseInt(parts[0]);
int denominator = Integer.parseInt(parts[1]);
sumNumerator += numerator;
sumDenominator += denominator;
}
}
double average = (double) sumNumerator / sumDenominator;
System.out.printf("分数总和为:%d/%d,平均分为:%.2f\n", sumNumerator, sumDenominator, average);
} catch (IOException e) {
System.err.println("读取文件时出现错误:" + e.getMessage());
} catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {
System.err.println("文件中包含非法分数:" + e.getMessage());
}
}
}
```
在上面的程序中,我们首先提示用户输入包含分数的文件名。然后,我们使用Java的输入输出流来读取文件中的内容。在读取过程中,我们将每一行分割成分数,并将分子和分母分别累加到变量`sumNumerator`和`sumDenominator`中。最后,我们计算分数的平均值,并将结果输出到控制台。
请注意,在读取文件时,我们使用了Java 7中引入的“try-with-resources”语句。这样可以确保文件在使用完毕后被正确地关闭,避免资源泄漏。同时,我们还使用了多重catch语句来捕获可能出现的异常,包括NumberFormatException(分数格式不正确)和ArrayIndexOutOfBoundsException(分数中没有分隔符“/”)。
阅读全文