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

Java 查找字符串中第一个元音的索引,java,string,if-statement,for-loop,return,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

所以我很难找到字符串中第一个元音的索引。这是我想出的代码,但它没有返回任何东西。 它应该返回第一个元音的索引,例如,如果字符串是“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;
    }
}
公共类元音
{
公共静态整型IS元音(字符串s)
{
int a=-1;
对于(int i=0;i=0)
{
a=i;
}
}
返回a;
}
}

使用专用静态方法检查某个字符是否为元音:

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;
}
publicstatic int-first元音lpos(字符串s){
对于(int i=0;i
如果不需要在代码中的任何其他位置检查元音,可以通过将元音检查移动到条件语句中来简化:

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;
}   
publicstatic int-first元音lpos(字符串s){
对于(int i=0;i
使用专用静态方法检查某个字符是否为元音:

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;
}
publicstatic int-first元音lpos(字符串s){
对于(int i=0;i
如果不需要在代码中的任何其他位置检查元音,可以通过将元音检查移动到条件语句中来简化:

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;
}   
publicstatic int-first元音lpos(字符串s){
对于(int i=0;i
方法不返回任何内容的原因是,它正在检查所有元音字符串中的整数索引。你应该做的是检查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;
     }
}
公共类元音
{
公共静态void main(字符串[]args)
{
int x=indexfirst元音(“Hello World”);
}
公共静态int indexfirst元音(字符串s)
{
对于(int i=0;i
方法不返回任何内容的原因是,它正在检查所有元音字符串中的整数索引。你应该做的是检查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;
     }
}
公共类元音
{
公共静态void main(字符串[]args)
{
int x=indexfirst元音(“Hello World”);
}
公共静态int indexfirst元音(字符串s)
{
对于(int i=0;i
您的意思是
indexOf(s.charAt(i))
,您需要退出循环,否则您将找到元音的最后一个索引。投票以“无法再复制”结束,因为这不太可能对其他人有任何用处。您是否设法解决了这个问题?仅供参考:方法名称有误导性
is元音()。好名字可能是
indexOfFirstVowel()
。我还没弄明白。我按照安德烈亚斯的建议做了,但现在这给了我一个错误。我在if语句中加了一个中断,但我不确定如何结束循环@Itamargreenporting break结束循环你的意思是
indexOf(s.charAt(i))
,你需要退出循环,否则你会找到元音的最后一个索引。投票以“无法再复制”结束,因为这不太可能对其他人有任何用处。您是否设法解决了这个问题?仅供参考:方法名称有误导性
is元音()。好名字可能是
indexOfFirstVowel()
。我还没弄明白。我按照安德烈亚斯的建议做了,但现在这给了我一个错误。我在if语句中加了一个中断,但我不确定如何结束循环@它是一个循环的结束