首页 > 解决方案 > 为什么当 for 循环进行时我的字符计数器没有增加?

问题描述

我目前正在编写一个程序,该程序接受一个字符串和一个字符(如果您决定在其中放入一个字符)和(应该)检查该字符在字符串中出现的次数并在最后打印出它在那里的次数。由于某种原因它不起作用,我需要一些帮助;谢谢你!

import java.util.Scanner;

public class HowManyChars {
    public HowManyChars() {
        Scanner sc = new Scanner (System.in);
        String askPhrase;
        String askChar;
        int charCounter = 0;
        System.out.println("Enter a phrase");
        askPhrase = sc.nextLine();
        System.out.println("Enter a letter");
        askChar = sc.nextLine();

        for (int i = 0; i < askPhrase.length(); i++) {
            if (askPhrase.substring(i, i + 1) == askChar) {
                    charCounter = charCounter + 1;
            }
        }

        System.out.println("There are " + charCounter + " " + askChar + " in " + askPhrase);
    }
}

标签: javafor-loop

解决方案


我将这个答案归功于@Mushif,他正确地解决了这个问题。您当前的比较逻辑是将字符串字符进行比较:

for (int i=0; i < askPhrase.length(); i++) {
    //        String                     char
    if (askPhrase.substring(i, i + 1) == askChar) {
        charCounter = charCounter + 1;
    }
}

尝试迭代输入单词的字符集,然后将 apples 与 apples 进行比较:

for (int i=0; i < askPhrase.length(); i++) {
    if (askPhrase.charAt(i) == askChar) {
        charCounter = charCounter + 1;
    }
}

您还可以直接在输入的字符集上使用增强循环:

for (char chr : askPhrase.toCharArray()) {
    if (chr == askChar) {
        charCounter = charCounter + 1;
    }
}

推荐阅读