计算文件中的字符数

Posted

技术标签:

【中文标题】计算文件中的字符数【英文标题】:Counting the number of characters in a file 【发布时间】:2011-02-02 17:41:15 【问题描述】:

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

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

【问题讨论】:

到目前为止你尝试过什么?它甚至进入while 循环吗? for 循环呢? 您是否检查过“行”在运行时实际上包含任何内容? “虽然我不确定,但我不相信它会进入 for 循环。”在这种情况下,不要放弃你的日常工作。一个简单的 System.out.println ("in the loop!");不应该让你的堆栈溢出。 【参考方案1】:

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

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

可以更简洁的写成

  count += line.length();

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

您需要分配文件,打开它,然后重新开始。你没有表现出任何这些。

【讨论】:

java.sun.com/javase/6/docs/api/java/util/Scanner.html他可能已经在这个方法之外做了。【参考方案5】:

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

scanner.useDelimiter("\n");

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

【讨论】:

我使用的测试文件里面有一个空行来测试看它是否被计数,而我的代码确实计数它。 你使用不同的文件作为我假设的计数字符示例的输入?【参考方案6】:

我没有过多地使用 Scanner,但不会

textFile.hasNextline();

更有意义
textFile.hasNext();

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

【讨论】:

以上是关于计算文件中的字符数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Perl 计算文件中的字符、单词和行数?

如何逐步计算字符串数组中的字符数? -Java

计算单元格中的字符数 (OpenOffice Writer)

计算字符串中的字符数,从中创建一个数据框列? [复制]

计算字符串中的字符数并删除重复项

使用JavaScript计算字符串中的句子数