用java编写一个程序,程序实现对用户指定的文本文件中的英文字符和字符串的个数进行统计的功能,并将结果根据用户选择输出至结果文件或屏幕。 1) 构建统计类,该类实现对I/O的操纵;实现对文本文件中英文字符、字符串的统计;实现对统计结果的输出。 2) 构建测试类,该类实现与用户的交互,向用户提示操作信息,并接收用户的操作请求。 程序应具有良好的人机交互性能,即:程序应向用户提示功能说明,并可根据用户的功能选择,执行对应的功能,并给出带详细描述信息的最终执行结果。
时间: 2024-02-13 22:02:31 浏览: 68
好的,以下是Java代码实现:
首先是统计类 TextStatistics:
```java
import java.io.*;
public class TextStatistics {
private int charCount = 0; // 统计英文字母个数
private int wordCount = 0; // 统计单词个数
public void count(String filename) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(filename));
String line;
while ((line = br.readLine()) != null) {
charCount += line.replaceAll("\\s", "").length(); // 去掉空格后统计英文字母个数
wordCount += line.split("\\s+").length; // 按空格分割统计单词个数
}
br.close();
}
public void output(String filename) throws IOException {
if (filename == null) { // 输出到屏幕
System.out.println("英文字母个数:" + charCount);
System.out.println("单词个数:" + wordCount);
} else { // 输出到文件
BufferedWriter bw = new BufferedWriter(new FileWriter(filename));
bw.write("英文字母个数:" + charCount + "\n");
bw.write("单词个数:" + wordCount + "\n");
bw.close();
System.out.println("结果已输出到文件 " + filename);
}
}
}
```
然后是测试类 TextStatisticsTest:
```java
import java.io.*;
public class TextStatisticsTest {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 从控制台读取输入
System.out.println("请输入文本文件路径:");
String filename = br.readLine();
TextStatistics ts = new TextStatistics();
ts.count(filename);
System.out.println("请选择输出方式(1-输出到屏幕,2-输出到文件):");
int choice = Integer.parseInt(br.readLine());
if (choice == 1) {
ts.output(null);
} else if (choice == 2) {
System.out.println("请输入结果文件路径:");
String resultFilename = br.readLine();
ts.output(resultFilename);
} else {
System.out.println("无效的选择!");
}
}
}
```
这个程序可以读取用户指定的文本文件,统计其中的英文字符和单词个数,并根据用户选择将结果输出到屏幕或文件中。具体实现中,统计类 TextStatistics 实现了对文本文件的读取和英文字符、单词个数的统计,同时还实现了根据用户选择将结果输出到屏幕或文件中的功能;测试类 TextStatisticsTest 则实现了与用户的交互,读取用户输入的文件路径和输出方式,并调用 TextStatistics 中的方法进行相应的操作。
阅读全文