用java编写编写一个程序,程序实现对用户指定的文本文件中的英文字符和字符串 的个数进行统计的功能,并将结果根据用户选择输出至结果文件或屏幕。构建统计类,该类实现对 I/O 的操纵;实现对文本文件中英文字符、字符 串的统计;实现对统计结果的输出。 2) 构建测试类,该类实现与用户的交互,向用户提示操作信息,并接收用 户的操作请求。 程序应具有良好的人机交互性能,即:程序应向用户提示功能说明,并可根 据用户的功能选择,执行对应的功能,并给出带详细描述信息的最终执行结果。
时间: 2023-06-24 08:08:15 浏览: 111
以下是一个基本的Java程序,可以实现对指定文本文件中英文字符和字符串的个数进行统计,并根据用户选择输出至结果文件或屏幕。
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class TextAnalyzer {
private String filename;
public TextAnalyzer(String filename) {
this.filename = filename;
}
public int countCharacters() throws IOException {
int count = 0;
try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
int c;
while ((c = reader.read()) != -1) {
if (Character.isLetter(c)) {
count++;
}
}
}
return count;
}
public int countStrings() throws IOException {
int count = 0;
try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
String line;
while ((line = reader.readLine()) != null) {
String[] words = line.split("\\s+");
for (String word : words) {
if (word.matches("[a-zA-Z]+")) {
count++;
}
}
}
}
return count;
}
public void outputResults(boolean toFile) throws IOException {
int charCount = countCharacters();
int stringCount = countStrings();
if (toFile) {
try (FileWriter writer = new FileWriter("results.txt")) {
writer.write("Character count: " + charCount + "\n");
writer.write("String count: " + stringCount + "\n");
}
System.out.println("Results written to results.txt");
} else {
System.out.println("Character count: " + charCount);
System.out.println("String count: " + stringCount);
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter filename: ");
String filename = scanner.nextLine();
TextAnalyzer analyzer = new TextAnalyzer(filename);
System.out.println("1. Output to screen");
System.out.println("2. Output to file");
System.out.print("Enter choice: ");
int choice = scanner.nextInt();
try {
analyzer.outputResults(choice == 2);
} catch (IOException e) {
System.err.println("Error: " + e.getMessage());
}
}
}
```
程序中包含一个 `TextAnalyzer` 类,该类实现了对文本文件中英文字符和字符串的统计功能,并包含一个 `outputResults` 方法,该方法根据用户选择将统计结果输出至结果文件或屏幕。
程序还包含一个 `main` 方法,该方法实现与用户的交互,向用户提示操作信息,并接收用户的操作请求。用户需要输入要分析的文本文件的文件名,然后选择将结果输出到屏幕或文件中。
程序运行后,将会输出类似以下的结果:
```
Enter filename: input.txt
1. Output to screen
2. Output to file
Enter choice: 1
Character count: 16
String count: 4
```
如果用户选择将结果输出至文件中,则程序将生成一个名为 `results.txt` 的文件,包含类似以下的内容:
```
Character count: 16
String count: 4
```
阅读全文