java代码1. 编写一个程序,程序实现对用户指定的文本文件中的英文字符和字符串 的个数进行统计的功能,并将结果根据用户选择输出至结果文件或屏幕。 第 5 / 6 页 1) 构建统计类,该类实现对 I/O 的操纵;实现对文本文件中英文字符、字符 串的统计;实现对统计结果的输出。 2) 构建测试类,该类实现与用户的交互,向用户提示操作信息,并接收用 户的操作请求。 程序应具有良好的人机交互性能,即:程序应向用户提示功能说明,并可根 据用户的功能选择,执行对应的功能,并给出带详细描述信息的最终执行结果。
时间: 2024-02-17 14:04:47 浏览: 115
好的,这是一个比较典型的程序设计任务,需要实现类的设计和交互式用户界面的设计。我可以帮你解答相关问题和提供思路,但是具体代码实现需要你自己完成。
首先,你需要设计一个统计类,这个类应该包含以下成员变量和方法:
- 成员变量:输入文件路径、统计结果、输出方式(结果文件路径或屏幕输出)等。
- 方法:从文件中读取英文字符和字符串,统计英文字符和字符串的个数,将结果输出至结果文件或屏幕。
以下是一个可能的统计类的代码示例(请注意这只是一个示例,具体实现可能还需要进行修改和调整):
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class TextStatistics {
private String inputFilePath;
private int charCount;
private int wordCount;
private String outputFilePath;
private boolean screenOutput;
public TextStatistics() {
inputFilePath = "";
charCount = 0;
wordCount = 0;
outputFilePath = "";
screenOutput = true;
}
public void setInputFilePath(String inputFilePath) {
this.inputFilePath = inputFilePath;
}
public void setOutputFilePath(String outputFilePath) {
this.outputFilePath = outputFilePath;
}
public void setScreenOutput(boolean screenOutput) {
this.screenOutput = screenOutput;
}
public void count() {
File inputFile = new File(inputFilePath);
try {
Scanner scanner = new Scanner(inputFile);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
for (int i = 0; i < line.length(); i++) {
char ch = line.charAt(i);
if (Character.isLetter(ch)) {
charCount++;
}
}
String[] words = line.split("[^a-zA-Z]+");
wordCount += words.length;
}
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("Input file not found");
return;
}
}
public void output() {
String result = "Character count: " + charCount + "\n"
+ "Word count: " + wordCount + "\n";
if (screenOutput) {
System.out.println(result);
} else {
try {
FileWriter writer = new FileWriter(outputFilePath);
writer.write(result);
writer.close();
} catch (IOException e) {
System.out.println("Output file write error");
return;
}
}
}
}
```
接下来,你需要设计一个测试类,这个类应该包含以下成员变量和方法:
- 成员变量:统计类对象、用户输入的选项。
- 方法:向用户提示操作信息,接收用户的操作请求,并调用统计类对象的方法进行操作。
以下是一个可能的测试类的代码示例(请注意这只是一个示例,具体实现可能还需要进行修改和调整):
```java
import java.util.Scanner;
public class TextStatisticsTest {
private TextStatistics statistics;
public TextStatisticsTest() {
statistics = new TextStatistics();
}
public void run() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("Please select an option:");
System.out.println("1. Set input file path");
System.out.println("2. Set output file path");
System.out.println("3. Set output mode");
System.out.println("4. Count");
System.out.println("5. Quit");
int option = scanner.nextInt();
scanner.nextLine();
switch (option) {
case 1:
System.out.print("Enter input file path: ");
String inputFilePath = scanner.nextLine();
statistics.setInputFilePath(inputFilePath);
break;
case 2:
System.out.print("Enter output file path: ");
String outputFilePath = scanner.nextLine();
statistics.setOutputFilePath(outputFilePath);
break;
case 3:
System.out.print("Enter output mode (0 for screen, 1 for file): ");
int outputMode = scanner.nextInt();
scanner.nextLine();
statistics.setScreenOutput(outputMode == 0);
break;
case 4:
statistics.count();
statistics.output();
break;
case 5:
scanner.close();
return;
default:
System.out.println("Invalid option");
break;
}
}
}
}
```
你可以根据具体情况进行修改和调整,比如增加对用户输入的校验等。最后,在主程序中创建测试类对象并运行即可:
```java
public class Main {
public static void main(String[] args) {
TextStatisticsTest test = new TextStatisticsTest();
test.run();
}
}
```
阅读全文