请你使用JDK自带的JavaAPI实现读取“/home/doc/xuanwu.txt”文件,统计文件中a,b,c三个字母出现的次数,并按降序输出到控制台(输出格式:a(8)、b(0)、c(5))。请写出实现代码。
时间: 2023-08-31 15:35:30 浏览: 57
### 回答1:
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
public class CountCharacterExample {
public static void main(String[] args) {
int count[] = new int[256];
String fileName = "/home/doc/xuanwu.txt";
try {
File file = new File(fileName);
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
int ch;
while ((ch = bufferedReader.read()) != -1) {
count[ch]++;
}
bufferedReader.close();
for (int i = 97; i <= 99; i++) {
System.out.println((char)i + "(" + count[i] + ")");
}
}
catch (IOException e) {
e.printStackTrace();
}
}
}
### 回答2:
实现该功能的代码如下:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
String filePath = "/home/doc/xuanwu.txt";
countOccurrences(filePath);
}
public static void countOccurrences(String filePath) {
int countA = 0;
int countB = 0;
int countC = 0;
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
for (int i = 0; i < line.length(); i++) {
char c = line.charAt(i);
if (c == 'a') {
countA++;
} else if (c == 'b') {
countB++;
} else if (c == 'c') {
countC++;
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("a(" + countA + ")、b(" + countB + ")、c(" + countC + ")");
}
}
```
该代码首先通过`BufferedReader`来读取指定文件的内容,然后使用一个循环遍历每一行的字符,统计字母a、b、c的出现次数。最后,按照降序的顺序输出到控制台。
请注意,该代码假设文件中的每一行都只包含ASCII字符,并且未考虑大小写敏感性。如需考虑以上因素,请自行调整代码。
### 回答3:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class CountLetters {
public static void main(String[] args) {
String filePath = "/home/doc/xuanwu.txt";
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
int countA = 0;
int countB = 0;
int countC = 0;
while ((line = reader.readLine()) != null) {
for (char ch : line.toCharArray()) {
if (ch == 'a' || ch == 'A') {
countA++;
} else if (ch == 'b' || ch == 'B') {
countB++;
} else if (ch == 'c' || ch == 'C') {
countC++;
}
}
}
System.out.println("a(" + countA + ")、b(" + countB + ")、c(" + countC + ")");
} catch (IOException e) {
e.printStackTrace();
}
}
}
代码解析:
1. 首先定义要读取的文件路径为"/home/doc/xuanwu.txt"。
2. 创建一个BufferedReader来读取文件,使用try-with-resources语句,可以自动关闭资源。
3. 创建三个变量countA、countB和countC,分别用于统计字母a、b和c的出现次数,初始值都设置为0。
4. 使用readLine()方法逐行读取文件内容,如果读取到的行不为空,则进入循环。
5. 将每一行的字符串转换为字符数组,遍历字符数组。
6. 如果字符是a或A,则countA加一;如果字符是b或B,则countB加一;如果字符是c或C,则countC加一。
7. 循环结束后,输出结果到控制台,输出格式为"a(8)、b(0)、c(5)"。
8. 如果发生IOException,则打印堆栈跟踪信息。