计算 java 中的特定字符

Counting a specific char in java

我想统计某个字符在字符串中出现的次数,在本例中是字符'a'。我知道我可以做到:

import java.util.Scanner;
public class samsJava {
public static void main(String[] args){

String testStr = "Whosebug Guess I'll Test The o's";
int counter = 0;
for (int i = 0; i<testStr.length(); i++ ){
    if(testStr.charAt(i) == ('o')){
        counter++;
    }
}
System.out.println("Number of o's:" + counter);
    }
}

但是我在这里做错了什么:

import java.util.Scanner;
public class samsJava {
public static void main(String[] args){

    System.out.println("Enter String:");

    Scanner input = new Scanner(System.in);
    String inputStr = input.nextLine();
    int counterA = 0;

for(int i = 1; i<inputStr.length(); i++){
    if(inputStr.substring(i - 1, i).equals('a')){
    counterA++;
        }
    }
System.out.println("number of a's:" + counterA);

}
        }

substring 会 return 一个 String 而不是 char

所以改为

if(inputStr.substring(i - 1, i).equals("a")){

方法一更好。

没有 String.equals('a') 一个 char。您可以使用 .equals("a"),但我更喜欢 for-each loop,例如

for(char ch : inputStr.toCharArray()){
    if (ch == 'a'){
        counterA++;
    }
}

你在for循环中要小心:

for (int i = 1; i <= inputStr.length(); i++)
                  ^

或更具可读性:

for (int i = 0; i < inputStr.length(); i++) 和...subString(i, i + 1)