我碰巧修改了源代码,如主题"读取文本文件然后执行字符计数并打印每个文件的相对频率"所示。 我以这样一种方式更改了它,即非字母字符也会被计算在内(请参阅下面的源代码)......
import java.io.*;
public class letterfrequency {
public static void main (String [] args) throws IOException {
File file1 = new File ("letternumberfrequency.txt");
BufferedReader in = new BufferedReader (new FileReader (file1));
int nextChar;
int other = 0;
char ch;
int [] count = new int [26];
while ((nextChar = in.read())!= -1) {
ch = ((char)nextChar);
ch = Character.toLowerCase (ch);
if (ch >= 'a' && ch <= 'z')
count [ch- 'a']++;
else
other ++;
}
for (int i=0; i<26; i++){
System.out.printf ("%c = %d n", i+ 'A', count [i]);
}
System.out.println ("Non-alphabetic characters: " + other);
in.close ();
}
}
但是,让我们说现在我在文本文件中有以下字符,"letternumberfrequency.txt":
71 鹅 - 83 汽车 - 58 头牛 - 64 只驼鹿 - 100 只蚂蚁 - 69 只手镯- 90 鼹鼠 - 87 鼻子
该文本文件中的数字将被视为字符串,对吗?但是我想提取数字,以便我也能够计算它们的频率 - 不是单个数字,而是整数(即有多少"71"、"83"、"58"、"64"等......使用"Double.parseDouble ()"会有帮助吗?
使用"Double.parseDouble ()"会有帮助吗?
不,不会。
您将首先在"-"
字符串上拆分文件,然后在" "
字符串上再次拆分找到的标记,修剪结果并使用Integer.parseInt(...)
因为数字字符串肯定表示整数,而不是双精度。