比较时忽略char上的大写和小写

ben*_*ben 2 java string char

这样做的目的是从用户那里得到一个句子并确定每个元音的显示数量.除了我不确定如何忽略大写和小写字母但我猜测equalsIgnoreCase或toUpperCase()时,大部分都是这样做的.

我想也知道,如果有另一种方式做到这一点使用的一些其他类String,StringBuilderCharacter.我还是编程的新手,本章正在杀了我.

    int counterA=0,counterE=0,counterI=0,counterO=0,counterU=0;
    String sentence=JOptionPane.showInputDialog("Enter a sentence for vowel count");        

    for(int i=0;i<sentence.length();i++){
        if(sentence.charAt(i)=='a'){
            counterA++;}
        else if(sentence.charAt(i)=='e'){
            counterE++;}
        else if(sentence.charAt(i)=='i'){
            counterI++;}
        else if(sentence.charAt(i)=='o'){
            counterO++;}
        else if(sentence.charAt(i)=='u'){
            counterU++;}
        }   
    String message= String.format("The count for each vowel is \nA:%d\nE:%d\nI:%d\nO:%d\nU:%d",
            counterA,counterE,counterI,counterO,counterU);  
    JOptionPane.showMessageDialog(null, message);
}
Run Code Online (Sandbox Code Playgroud)

}

代码在这里

Jas*_*key 6

因为你在比较原始字符,

Character.toLowerCase(sentence.charAt(i))=='a'      
Character.toUpperCase(sentence.charAt(i))=='A' 
Run Code Online (Sandbox Code Playgroud)

对于你的Java案例来说,这应该是最好的方法.

但如果你在Stirng上进行比较

 sentence.substring(i,i+1).equalsIgnoreCase("a")
Run Code Online (Sandbox Code Playgroud)

会更直接,但有点难读.

如果在数组或列表中有String类型,则调用

s.equalsIgnoreCase("a") 
Run Code Online (Sandbox Code Playgroud)

会好得多.请注意,您现在正在与"a"而不是"a"进行比较.

如果您使用StringBuilder/ StringBuffer,则可以调用toString(),然后使用相同的方法.

sb.toString().substring(i,i+1).equalsIgnoreCase("a");
Run Code Online (Sandbox Code Playgroud)