计算文本文件中的字符并打印到文本文件
我想计算此文本文件中每个字母字符的数量,除非行以“>”开头,在这种情况下,它只会将该行写入文件。这是我的,它不会编译,因为它说“error: cannot find symbol
”,并指出在我的声明line.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);
}
文件样本:
这是一个程序,将计算字符数 abcdabcdababab
想程序输出:
这是一个程序,将统计字符 a:5 b:5 c:2 d:2
它应该是line.length()
与表示的方法的参数:
for (int m=0; m < line.length(); m++)
我加了这个,现在它运行,但它打印计数错误。它看起来像这样:A:0 B:1 A:0 C:1 B:0 B:0 A:1 – 2014-12-02 22:07:02
必须使用数组的length
财产和字符串的length()
方法相混淆。这些方法必须通过()
(圆括号)进行访问,并且可以通过名称访问属性。
UPDATE: 需要初始化以上的计数器循环。它们在循环的每次迭代中重置为0。
int Acounter=0; int Bcounter=0; int Ccounter=0;
这些应该高于用于loop.Another建议是,在Java变量具有开始与小写字母(和类应与大写字母开头)。例如:ACounter
应该是aCounter
。
伟大的建议!它现在编译并运行,但它不正确地打印每个字母的数字。它类似于A:0 A:0 B:1 A:0 A:0 A:0 C:1 – 2014-12-02 22:11:42
看看更新的答案。 – 2014-12-02 22:17:10
我已经将这些变量初始化了,并且我已经按照您的建议将所有变量更改为小写。好决定。出于某种原因,我得到了同样的答案。非常感谢你的帮助。我这么简单的程序遇到了很多麻烦。 – 2014-12-03 01:24:30
line.length()应该修复你的问题。此外,作为一个良好的JAVA练习,您可以使用hashmap来跟踪每个角色的数量。要确定您拥有的字符是否是字母字符,可以使用Character.isLetter(string.charAt(m))。请参阅此条目以获取更多详细信息:http://stackoverflow.com/questions/4047808/what-is-the-best-way-to-tell-if-a-character-is-a-letter-or-number- in-java-withou – 2014-12-02 20:50:32
做上面的HashMap思想也是避免创建26个不同变量的简单方法。从编码的角度(更多的变量意味着更多的混乱机会)和从懒惰的角度(大量输入,或大量的复制/粘贴/更改,从而产生更多的编码错误)创建多个变量是一个坏主意 – Xynariz 2014-12-02 21:08:08
谢谢您的帮助!它现在可以顺利运行和编译,但每个字母的计数都不正确。这是打印如:A:0 B:0 A:0 A:0 B:1 A:0 B:0 – 2014-12-02 22:14:11