Java 与此输出混淆

Java 与此输出混淆,java,string,Java,String,下面代码的输出为3。有人能解释为什么是3吗?我不明白 public static void main(){ Scanner sc = new Scanner(System.in); String str = "Welcome"; int ctr = 0; for(int i =0;i<str.length();i++) { if("aeiou".indexOf(str.charAt(i))!=-1) { ctr++

下面代码的输出为3。有人能解释为什么是3吗?我不明白

public static void main(){
    Scanner sc = new Scanner(System.in);
    String  str = "Welcome";
    int ctr = 0;

    for(int i =0;i<str.length();i++) {
        if("aeiou".indexOf(str.charAt(i))!=-1) {
            ctr++;
        }
    }
    System.out.println(ctr);
}

让我们一起破解这个密码

 for(int i =0;i<str.length();i++)
            if("aeiou".indexOf(str.charAt(i))!=-1)
              ctr++;
i=0->str.charAt0='W' eaiou中没有值为“W”的元素,因此indexOf返回-1。ctr=0

i=1->str.charAt1='e' “e”是eaiou的一个元素,因此indexOf返回1。ctr=1

i=2->str.charAt2='l' eaiou中没有值为“l”的元素,因此indexOf返回-1。ctr=1

i=3->str.charAt3='c' eaiou中没有值为“c”的元素,因此indexOf返回-1。ctr=1

i=4->str.charAt4='o' “o”是返回3的eaiou so索引的元素。ctr=2

i=5->str.charAt5='m' eaiou中没有值为“m”的元素,因此indexOf返回-1。ctr=2; i=6->str.charAt6='e' “o”是eaiou的一个元素,因此indexOf返回1。ctr=3;
最终值为3。Welcome中的元音数

看起来您需要一个值,您期望的值是多少?这个函数应该做什么?Welcome中有3个元音…你的大括号和缩进没有对齐,令人困惑。它在Welcome中迭代,每个字符都会检查它是否包含aeiou aeiou.indexOfstr.charAti=-1,如果是,则为ctr++。ctr==3,因为欢迎包含3个元音。谢谢你们真的在另一个音符上帮助了我。有什么原因让我被否决吗?我不明白,太多的反对票会阻止我问更多的问题。这里的用户可能会严格遵守规则,我可以理解这可能会让你有点犹豫是否再次发布,但遵循这些规则有助于网站对大众更有用,而不仅仅是针对你的具体问题。试着通读关于写一个好问题的常见问题。