为什么我的外环不会增加到数组的下一个元素?

时间:2015-11-25 22:24:08

标签: java arrays nested-loops

我有两个嵌套循环,外部循环从字母数组(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

2 个答案:

答案 0 :(得分:0)

问题是reader对象在第一个循环之后位于文件的最后。您需要在循环开始时调用reader.reset()将其移回文件的开头。

最好将文件阅读器移动到外部循环,将字母移动到内部循环,因为一遍又一遍地读取相同的文件并不是非常有效。

答案 1 :(得分:0)

您只读取一次文件,以便在计算第一个字母“A”的实例后退出。您可以将字母表放在带有整数的地图中,以便计算和使用 Arrays.asList(阿尔法)。载(c)中   如果列表中包含该字母,则增加该字母的计数。