计算文件中的字符数

时间:2010-03-31 01:18:15

标签: java char textinput

我正在编写一个程序,一个部分要求程序打印文件中有多少个字符(包括空格)。我现在的代码虽然每次都返回0,但我不确定为什么它不计算字符。

public int getcharCount(Scanner textFile) {

        int count = 0;

        while(textFile.hasNext()) {
            String line = textFile.nextLine();
            for(int i=0; i < line.length(); i++)
                count++;
        }   
        return count;

    }

编辑:我的程序的规格说我应该使用扫描仪。虽然我不确定,但我不相信它会进入for循环。当我使用相同的技术来计算文件中的行数时,它完美地工作。该代码是:

 public int getLineCount(Scanner textFile) {
    int lineCount = 0;

    while(textFile.hasNext()) {
        String line = textFile.nextLine();
        lineCount++;
    }

    return lineCount;
}

我们不需要检查该行是否包含任何内容。如果它出现在文本文件的中间,则应将其计为一个字符。

6 个答案:

答案 0 :(得分:6)

我不知道为什么它不起作用(以下代码不会修复它),但是

  for(int i=0; i < line.length(); i++)
            count++;

可以写成更简洁的

  count += line.length();

答案 1 :(得分:4)

您为什么使用扫描仪? 一个简单的读者就足够了。 如果你坚持使用扫描仪,你必须明白它将输入划分为由某个模式(默认为空格)分隔的字段,也许可以设置一个空模式,以便字段与字符对应(但同样,过度使用,只需使用读者)

答案 2 :(得分:1)

在将扫描仪传递给getcharCount()之前,您是否已经阅读了扫描仪中的所有内容?

答案 3 :(得分:0)

您需要分配文件,打开文件并重置为开头。你没有表现出任何一个。

答案 4 :(得分:0)

您为扫描仪设置了哪个分隔符?您不会在代码中显示它,但是您需要将它作为单个标记处理。

scanner.useDelimiter("\n");

另外,你说第二个代码示例运行得很好。你打印出行的值来验证它包含什么吗?它可能已正确计算了行数,但如果行实际上没有包含任何内容,那么这将有助于解释为什么它不会进入你的for循环。

答案 5 :(得分:0)

我没有太多使用Scanner,但不会

textFile.hasNextline();

更有意义
textFile.hasNext();

只是一个想法 - 我不确定这是否会对执行产生任何重大影响