计算来自String变量的indexOf字符

时间:2018-10-07 04:00:06

标签: java string variables indexof

我目前正在从事Java练习。我试图对使用String输入并使用JOptionPane进行计数的indexOf变量中的字符实例进行计数。到目前为止,我已经知道了这一点,但是由于在测试中该字符类型的字母数错误而返回计数,因此无法正常工作。

String input_text;     
input_text = JOptionPane.showInputDialog("Write in some text");
System.out.println("Index of e in input_text: "+input_text.indexOf('e'));

然后,用户需要猜测所写字符串中字母的正确数量。我为此尝试了各种方法,但遇到了麻烦。

2 个答案:

答案 0 :(得分:0)

字符串indexOf函数在这里不能解决您的问题,因为它旨在为您提供所需子字符串(在这种情况下为特定字符)首次出现的索引。 / p>

您需要遍历字符串中的字符并计算与特定字符的匹配项。

String input_text;     
input_text = JOptionPane.showInputDialog("Write in some text");
System.out.println("Index of e in input_text: "+ getMatchCount(input_text, 'e'));

int getMatchCount(String input, char charToMatch) {
    int count = 0;
    for(int i = 0; i < input.length(); i++) {
        if(input.charAt(i) == charToMatch) {
            count++;
        }
    }
    return count;
} 

您还可以直接使用Apache Commons StringUtils的countMatches函数。

此外,如果您打算在输入字符串中查找多个(不同)字符的计数,则可以为输入字符串中存在的每个字符创建一个出现计数图,这样您就不必当要求输入不同字符的匹配计数时,一次又一次地遍历整个字符串。

答案 1 :(得分:0)

  

感谢这里的所有评论,我设法解决了这样的字符循环

public static void main(String[] args) {
  String s1="this is a sentence";
    char ch=s1.charAt(s1.indexOf('e'));
    int count = 0; 
    for(int i=0;i<s1.length();i++) {
        if(s1.charAt(i)=='e'){
            count++;
        }
    }
    System.out.println("Total count of e:=="+count);
}

}

  

我现在将尝试添加JOptionPane组件:-)