我有两个嵌套循环,外部循环从字母数组(A-Z)中读取,并将其与从文件中读取的字符进行比较。它应该写入不同的文件,字母表中的字母和文件中提到的次数。所以就是这样:
for(int i = 0; i<alph.length; i++)
{
int count = 0;
for(;;)
{
try {
c = reader.read();
} catch (IOException e) {
e.printStackTrace();
}//end of catch
if(c==-1)
break;
if(alph[i] == (char) c)
{
count++;
}
}//end of endless loop
writer.println(alph[i] + " " + count);
}//end of alphabet loop
它所读取的文件包括短语&#34; JAVA STALE GUIDELINES。&#34;并且它读取A被提及3次并且写得很好。但是,它不会转到下一个字母和那些......等等。
到达这一位的字母只是A:
if(alph[i] == (char) c)
{
count++;
}
所有其他字母都写为0。
这是最终结果:
A 3 B 0 C 0 D 0 E 0 F 0 G 0 H 0 我0 J 0 K 0 L 0 M 0 N 0 O 0 P 0 问0 R 0 S 0 T 0 U 0 V 0 W 0 X 0 Y 0 Z 0
答案 0 :(得分:0)
问题是reader
对象在第一个循环之后位于文件的最后。您需要在循环开始时调用reader.reset()
将其移回文件的开头。
最好将文件阅读器移动到外部循环,将字母移动到内部循环,因为一遍又一遍地读取相同的文件并不是非常有效。
答案 1 :(得分:0)
您只读取一次文件,以便在计算第一个字母“A”的实例后退出。您可以将字母表放在带有整数的地图中,以便计算和使用 Arrays.asList(阿尔法)。载(c)中 如果列表中包含该字母,则增加该字母的计数。