计算字符串中字符的出现次数

时间:2014-10-04 07:15:57

标签: java

我试着计算一个字符串中字母的出现,但我用数字代替它们以使它更清晰。然后,当我运行该代码时,它不显示我想要的结果。我真的不知道为什么......请帮助!!非常感谢你!!

    Scanner Scanner1 = new Scanner(System.in);
    out.println("Please type in a string below.");
    String UserInput = Scanner1.nextLine();
    String Index = "12345";
    int length = 2;//Modified
    int[] count = new int[length];
    int length2 = 5; //Modified
    int n1 = 0;
    int n2 = 0;
    out.println(UserInput.charAt(n1));//Modified
    out.println(Index.charAt(n2));//Modified
    for (int i = 0; i < length; i++) {
        if (UserInput.charAt(n1) == Index.charAt(n2)) {
            n1++;
            count[length - (length - n1)]++;

        } else {
            n2++;
            if(n2==length2)
            {
                n2 = n2-length2;
            }
        }
    }

2 个答案:

答案 0 :(得分:2)

计算字符串中特定字符的相对简短的方法是使用replaceAll方法的返回值:

public static int countChar(final String str, final char c) {
    return str.replaceAll("[^" + c + "]","").length();
}

模式[^x]x可以替换为任何字符(或不同字符数量))将匹配给定字符串中的所有内容 x 。因此[^T]的{​​{1}}会将TESTE替换为给定的替换(S(无))并保留"" s 。该方法将返回T。如果计算该长度,您将收到给定字符串的搜索字符数。

示例

TT

打印

System.out.println(countChar("TEST", 'T'));
System.out.println(countChar("TEST", 'E'));
System.out.println(countChar("TEST", 'S'));

(请记住,方法区分大小写)

答案 1 :(得分:0)

使用像Hashmap这样的集合。 Here存储遇到的每个唯一字符,而Integer会在遇到每个字符时存储它们的计数。