使用java在同一个项目中随机产生1000个小写英文字母,并写入到”letter.dat”文件里面,读取该文件,统计每个字母各出现了几次,并打印出来
时间: 2024-03-06 18:51:38 浏览: 63
用JAVA语言统计文本文件中字母出现的频率
5星 · 资源好评率100%
好的,我来帮你解决这个问题。
我们可以将随机生成字母和统计每个字母出现的次数封装到同一个类中,如下所示:
```java
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;
public class LetterCounter {
private static final String FILE_NAME = "letter.dat";
public static void main(String[] args) {
generateLetters();
countLetters();
}
private static void generateLetters() {
Random random = new Random();
byte[] letters = new byte[1000];
for (int i = 0; i < letters.length; i++) {
letters[i] = (byte) (random.nextInt(26) + 'a');
}
try (FileOutputStream outputStream = new FileOutputStream(FILE_NAME)) {
outputStream.write(letters);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void countLetters() {
int[] counts = new int[26];
try (FileInputStream inputStream = new FileInputStream(FILE_NAME)) {
int b;
while ((b = inputStream.read()) != -1) {
if (b >= 'a' && b <= 'z') {
counts[b - 'a']++;
}
}
} catch (IOException e) {
e.printStackTrace();
}
for (int i = 0; i < counts.length; i++) {
System.out.printf("%c: %d\n", 'a' + i, counts[i]);
}
}
}
```
在 main() 方法中,我们先调用 generateLetters() 方法随机生成 1000 个小写英文字母并写入到 "letter.dat" 文件中,然后再调用 countLetters() 方法读取该文件并统计每个字母出现的次数并打印出来。
注意,我们在代码中使用了一个常量 FILE_NAME 来保存文件名,这样可以方便地在两个方法中共用。另外,我们在 try-with-resources 语句中打开了文件流,这样可以确保在处理完文件后自动关闭文件流,无需手动释放资源。
希望对你有帮助!
阅读全文