查找字符串中第一个元音的索引

时间:2016-10-13 19:57:02

标签: java string if-statement for-loop return

因此我无法在字符串中找到第一个元音的索引。这是我提出的代码,但它没有返回任何东西。 它应该返回第一个元音的索引,例如,如果字符串是" Hello World"它应该返回1,因为第一个元音的索引是' e。如果给定字符串中没有元音,则应返回-1。

public class Vowel
{
    public static int isVowel(String s)
    {
        int a = -1;
        for(int i = 0; i < s.length(); i++)
        {
            if("aeiouAEIOU".indexOf(i) >= 0)
            {
                a = i;  
            }
        }
        return a;
    }
}

2 个答案:

答案 0 :(得分:2)

利用私有静态方法检查某个字符是否为元音:

public static int firstVowelPos(String s) {
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if (isVowel(c))
            return s.indexOf(c);
    }
    return -1;
}   

private static boolean isVowel(char c) {
      return "AEIOUaeiou".indexOf(c) != -1;
}

如果您不需要在代码中的任何其他位置检查元音,可以通过将元音检查移动到条件语句中来简化:

public static int firstVowelPos(String s) {
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if ("AEIOUaeiou".indexOf(c) != -1)
            return s.indexOf(c);
    }
    return -1;
}   

答案 1 :(得分:0)

你的方法没有返回任何东西的原因是因为它检查所有元音字符串中的整数索引。你应该做的是检查s中的i处的字符,看它是否是元音,然后返回该索引。

另外,我建议将您的方法重命名为“indexFirstVowel”。如果你想尝试,下面是一个可能的解决方案:

public class Vowel
{

     public static void main(String[] args)
     {
        int x = indexFirstVowel("Hello World");
     }


     public static int indexFirstVowel(String s)
     {
        for(int i = 0; i < s.length(); i++)
        {
              switch(s.charAt(i))
              {
                  case 'a':
                  case 'e':
                  case 'i':
                  case 'o':
                  case 'u':
                  case 'A':
                  case 'E':
                  case 'I':
                  case 'O':
                  case 'U':
                     return i;
                  default:
                     break;
              }
         }

          return -1;
     }
}