Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的外环没有';t递增到数组的下一个元素?_Java_Arrays_Nested Loops - Fatal编程技术网

Java 为什么我的外环没有';t递增到数组的下一个元素?

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();

我有两个嵌套循环,外部循环从字母表数组(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
所有其他字母都写为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++;

                }