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

问题描述 投票:0回答:3

所以我很难找到字符串中第一个元音的索引。这是我想出的代码,但它没有返回任何内容。 它应该返回第一个元音的索引,例如如果字符串是“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;
    }
}
java string if-statement for-loop return
3个回答
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;
}   

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;
     }
}

0
投票

Swift 5.8 我编写了一个简单的函数来查找字符串中第一个元音的索引:

func findIndexOfFirstVowel(_ word: String) -> Int {
    word.map { $0.lowercased() }.firstIndex(where: { $0 == "a" || $0 == "e" || $0 == "i" || $0 == "o" || $0 == "u" })!
}

我不建议在生产代码中强制展开,并且可能有更有效的方法来检查元音。尽管如此,我想提供这个作为替代解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.