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过一会儿再下摆。