Java 查找字符串中第一个元音的索引
所以我很难找到字符串中第一个元音的索引。这是我想出的代码,但它没有返回任何东西。 它应该返回第一个元音的索引,例如,如果字符串是“Hello World”,它应该返回1,因为第一个元音的索引是“e”。如果给定字符串中没有元音,则应返回-1Java 查找字符串中第一个元音的索引,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
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语句中加了一个中断,但我不确定如何结束循环@它是一个循环的结束