字符在txt文件中出现java

时间:2017-02-16 03:05:45

标签: java file char

我正在txt文件中写一个字符出现计数器。当我运行时,我的计数结果为0:

  public double charPercent(String letter) {

        Scanner inputFile = new Scanner(theText);

        int charInText = 0;
        int count = 0;

        // counts all of the user identified character
        while(inputFile.hasNext()) {

            if (inputFile.next() == letter) {
                count += count;
            }

        }

        return count;
    }

任何人都知道我哪里出错了?

3 个答案:

答案 0 :(得分:1)

这是因为Scanner.next()将返回整个单词而不是字符。这意味着字符串from很少与单个字母参数相同(除了单词是单个字母的情况,例如' I'或' A')。我也没有看到这条线的必要性:

int charInText = 0;

因为没有使用变量。

相反,你可以尝试这样的事情:

 public double charPercent(String letter) {

    Scanner inputFile = new Scanner(theText);

    int totalCount = 0;

    while(inputFile.hasNext()) {

        //Difference of the word with and without the given letter
        int occurencesInWord = inputFile.next().length() - inputFile.next().replace(letter, "").length();

        totalCount += occurencesInWord;

    }

    return totalCount;
}

通过使用带有和不带字母的inputFile.next()的单词长度之间的差异,您将知道该单词在该特定单词中出现的次数。这将添加到总计数中,并对txt中的所有单词重复。

答案 1 :(得分:0)

使用inputFile.next().equals(letter)代替inputFile.next() == letter1

因为==检查引用。您应该检查String对象的内容。因此,请使用equals()

String

正如评论中所述,将count += count更改为count +=1count++

Read here for more解释。

答案 2 :(得分:0)

您的意思是将下一个单词与您想要的字母进行比较吗?

inputFile.next()将返回下一个String,由空格分隔(tab,enter,spacebar)。除非您的文件只包含以空格分隔的单数字母,否则您的代码将无法找到这些字母中所有出现的字母。

您可能想尝试调用inputFile.next()来获取下一个String,然后将该String断开为charArray。从那里,你可以遍历charArray(想想循环)来找到所需的字符。作为提到的评论者,您不希望使用==来比较两个字符串,但您可以使用它来比较两个字符。如果您的String的charArray中的字符与您想要的字符匹配,请尝试count++将您的计数器增加1。