Java 为什么我的外环没有';t递增到数组的下一个元素?
我有两个嵌套循环,外部循环从字母表数组(A-Z)读取,并将其与从文件读取的字符进行比较。它应该将字母表中的字母和文件中提到的次数写入不同的文件。就是这样:Java 为什么我的外环没有';t递增到数组的下一个元素?,java,arrays,nested-loops,Java,Arrays,Nested Loops,我有两个嵌套循环,外部循环从字母表数组(A-Z)读取,并将其与从文件读取的字符进行比较。它应该将字母表中的字母和文件中提到的次数写入不同的文件。就是这样: for(int i = 0; i<alph.length; i++) { int count = 0; for(;;) { try { c = reader.read();
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
所有其他字母都写为0
这就是最终结果:
A 3
B 0
c0
D 0
e0
f0
G0
h0
I 0
J 0
k0
l0
M 0
n0
O 0
P0
问题0
r0
s0
t0
u0
V0
w0
x0
y0
z0
问题是
读取器
对象位于第一个循环之后的文件的最末端。您需要在循环开始时调用reader.reset()
,将其移回文件开头
不过,最好将文件读取器移动到外部循环,将字母表移动到内部循环,因为反复读取同一个文件不是很有效 您只读取文件一次,以便在计算第一个字母“A”的实例后退出。你可以把你的字母表放在一张带有整数的地图上,以便计数和使用 Arrays.asList(alpha).contains(c)
如果该字母包含在列表中,则增加该字母在映射中的计数 因为在外循环中迭代字母表,在内循环中读取x个字符。完成“A”后,输入文件处于EOF,程序退出。
if(alph[i] == (char) c)
{
count++;
}