Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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 计算文本文件中的字符数并打印到文本文件_Java_File Io_Counting - Fatal编程技术网

Java 计算文本文件中的字符数并打印到文本文件

Java 计算文本文件中的字符数并打印到文本文件,java,file-io,counting,Java,File Io,Counting,我想计算这个文本文件中每个字母字符的数量,除非该行以“>”开头,在这种情况下,它只需将该行写入文件。这就是我所拥有的,它不会编译,因为它显示“错误:找不到符号”,并指向for语句行.length中的句点 为什么这不起作用 String line; while ((line = br.readLine () ) != null) { if (line.startsWith( ">" )) { line += "\t"; bw.write (li

我想计算这个文本文件中每个字母字符的数量,除非该行以“>”开头,在这种情况下,它只需将该行写入文件。这就是我所拥有的,它不会编译,因为它显示“
错误:找不到符号”
,并指向for语句
行.length中的句点

为什么这不起作用

String line;
while ((line = br.readLine () ) != null)
{
    if (line.startsWith( ">" ))
    {
        line += "\t";
        bw.write (line);
    }
    else
    { 
            int aCounter=0;
            int bCounter=0;
            int cCounter=0;
        for (int m=0; m < line.length; m++)
        {
            char letter = line.charAt(m);


            switch (letter)
            {
                case 'A':
                    aCounter++;
                    break;
                case 'B':
                    bCounter++;
                    break;
                case 'C':
                    cCounter++;
                    break;
            }
            }    
        bw.write( "A:" + aCounter + " B:" + bCounter + " C:" + cCounter);

}
字符串行;
而((line=br.readLine())!=null)
{
if(第行开始时带(“>”)
{
行+=“\t”;
bw.write(行);
}
其他的
{ 
int a计数器=0;
int bCounter=0;
int cCounter=0;
对于(int m=0;m
要读取的文件示例:

这是一个计算字符数的程序 abcdababab

想要的程序输出:

这是一个计算字符数的程序 a:5B:5C:2d:2


它应该是
line.length()
,参数表示方法:

for (int m=0; m < line.length(); m++ )
for(int m=0;m
您一定会与数组的
length
属性和字符串的
length()
方法混淆。必须使用
()
(括号)访问这些方法,并且只能通过名称访问这些属性

更新: 您需要初始化for循环上方的计数器。它们在循环的每次迭代中都重置为0

int-Acounter=0;
int Bcounter=0;
int Ccounter=0;


另一个建议是,在java中,变量必须以小写字母开头(类应该以大写字母开头)。例如:
ACounter
应该是
ACounter

line.length()应该可以解决您的问题。另外,作为一种良好的JAVA实践,您可以使用hashmap跟踪每个字符的计数。要确定您拥有的字符是否是字母字符,可以使用character.isleter(string.charAt(m))。有关更多详细信息,请参阅此条目:执行上述Hashmap想法也是避免创建26个不同变量的简单方法。无论是从编码角度(变量越多,就越容易出错)还是从惰性角度来看,创建这么多变量都是一个坏主意(大量键入,或大量复制/粘贴/更改,这会产生更多的编码错误)谢谢你的帮助!它现在运行和编译都很顺利,但是每个字母的计数都不正确。它的打印方式是:A:0 B:0 A:0 A:0 A:0 B:1 A:0 B:0我添加了这个,现在它运行了,但是它打印的计数错误。看起来是这样的:A:0 B:1 A:0 C:1 B:0 B:0 A:1伟大的建议!它现在编译和运行了,但是它打印了ea的数量ch字母不正确。类似于A:0A:0B:1A:0A:0A:0C:1I已经初始化了这些变量,并且我已经按照您的建议将所有变量更改为小写。打得好。出于某种原因,我得到了相同的答案。非常感谢您的帮助。我在使用如此简单的程序时遇到了很多麻烦。@devopeters实际上,您需要将
bw.write()
带出for循环。它应该正好位于for循环之后。它是这样的..您将计数器初始化为0,读取行并迭代行的字符,并在完成行(for循环)后不断更新计数器你需要打印计数器。好的,我已经这样做了,现在它计算了正确的字符数,但是列出了好几次,比如:a:3B:2A:2A:1B:1,它应该是:a:6B:3你想单独计算每一行还是所有行一起计算?如果是这样,你需要在while循环之前初始化计数器,并需要打印t过一会儿再下摆。