繁体   English   中英

计算文件中的字符数

[英]Counting the number of characters in a file

我正在写一个程序,要求程序打印文件中有多少个字符(包括空格)。 我现在拥有的代码虽然每次都会返回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;
}

而且我们不需要检查该行是否包含任何东西。 如果它出现在文本文件的中间,则应视为一个字符。

我不知道为什么它不起作用(并且下面的代码不能解决它),但是

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

可以写得更简洁

  count += line.length();

为什么要使用扫描仪? 一个简单的阅读器就足够了。 如果您坚持使用扫描仪,则必须了解它将输入分为由某些模式(默认为空格)分隔的字段,也许可以设置一个空模式以使字段与字符相对应(但是同样,过于矫kill过正,只需使用Reader)

在传递给getcharCount()之前,您是否已经从扫描器中读取了所有内容?

您需要分配文件,将其打开,然后重置为开头。 你什么都不显示。

您为扫描仪设置了什么定界符? 您无需在代码中显示它,但需要使它将一行视为单个标记。

scanner.useDelimiter("\n");

另外,您说第二个代码示例运行良好。 您是否打印了line的值以验证其中是否包含任何内容? 它可能已经正确地计算了行数,但是如果行实际上不包含任何内容,那么这将有助于解释为什么它不进入for循环。

我与Scanner的合作不多,但不会

textFile.hasNextline();

textFile.hasNext();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM