对此输出感到困惑

时间:2017-06-27 16:35:29

标签: 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++;
        }
    }
    System.out.println(ctr);
}

1 个答案:

答案 0 :(得分:3)

让我们一起打破这段代码。

 for(int i =0;i<str.length();i++)
            if("aeiou".indexOf(str.charAt(i))!=-1)
              ctr++;
  • i=0 -> str.charAt(0) = 'W' 在&#34; eaiou&#34;中没有元素。有价值的&#39; W&#39;因此indexOf会返回-1。 CTR = 0;

  • i=1 -> str.charAt(1) = 'e' &#39; E&#39;是&#34; eaiou&#34;的一个元素。因此indexOf会返回1。 CTR = 1;

  • i=2 -> str.charAt(2) = 'l' 在&#34; eaiou&#34;中没有元素。有价值的&#39; l&#39;因此indexOf会返回-1。 CTR = 1;

  • i=3 -> str.charAt(3) = 'c' 在&#34; eaiou&#34;中没有元素。有价值的&#39; c&#39;因此indexOf会返回-1。 CTR = 1;

  • i=4 -> str.charAt(4) = 'o' &#39;○&#39;是&#34; eaiou&#34;的一个元素。所以indexOf返回3。 CTR = 2;

  • i=5 -> str.charAt(5) = 'm' 在&#34; eaiou&#34;中没有元素。有价值的&#39; m&#39;因此indexOf会返回-1。 CTR = 2;
  • i=6 -> str.charAt(6) = 'e' &#39;○&#39;是&#34; eaiou&#34;的一个元素。因此indexOf会返回1。 CTR = 3;

最终值为3.&#34;欢迎&#34;

中的元音数量