如何检查字符是否为元音?

这个Java代码给我带来了麻烦:

String word =  int y = 3; char z; do { z = word.charAt(y); if (z!='a' || z!='e' || z!='i' || z!='o' || z!='u')) { for (int i = 0; i==y; i++) { wordT = wordT + word.charAt(i); } break; } } while(true); 

我想检查单词的第三个字母是否是非元音,如果是,我希望它返回非元音和前面的任何字符。 如果它是一个元音,它会检查字符串中的下一个字母,如果它也是一个元音,那么它会检查下一个字母,直到它找到一个非元音。

例:

word = Jaemeas然后wordT必须= Jaem

例2:

word = Jaeoimus然后wordT必须= Jaeoim

问题在于我的if语句,我无法弄清楚如何检查那一行中的所有元音。

你的病情有缺陷。 想想更简单的版本

 z != 'a' || z != 'e' 

如果z'a'则后半部分为真,因为z不是'e' (即整个条件为真),如果z'e'则前半部分为真,因为z不是'a' (再次,整个条件是真的)。 当然,如果z既不是'a'也不是'e'那么这两个部分都是正确的。 换句话说,你的病情永远不会是假的!

您可能希望&& s在那里:

 z != 'a' && z != 'e' && ... 

也许:

 "aeiou".indexOf(z) < 0 

清洁方法检查元音:

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

使用正则表达式的方法怎么样? 如果使用正确的模式,则可以使用组从Matcher对象获取结果。 在下面的代码示例中,只要存在模式匹配,对m.group(1)的调用应该返回您正在查找的字符串。

 String wordT = null; Pattern patternOne = Pattern.compile("^([\\w]{2}[AEIOUaeiou]*[^AEIOUaeiou]{1}).*"); Matcher m = patternOne.matcher("Jaemeas"); if (m.matches()) { wordT = m.group(1); } 

只是采用一种不同的方法来实现相同的目标。

对于初学者,你正在检查这封信是“不是”或“不是e”还是“不是我”等。

让我们说这封信是我。 然后字母不是a,所以返回“True”。 然后整个语句为True,因为我!= a。 我认为你要找的是和语句一起,而不是OR。

完成此操作后,您需要查看如何增加y并再次检查。 如果你第一次得到一个元音,你想看看下一个字符是否也是一个元音。 这仅检查位置y = 3处的字符。

实际上有更有效的方法来检查它,但既然你已经问过你的问题是什么,我可以说问题是你必须用AND运算符改变那些OR运算符。 使用if语句,它将永远是真的。

  String word="Jaemeas"; String wordT=""; int y=3; char z; do{ z=word.charAt(y); if(z!='a'&&z!='e'&&z!='i'&&z!='o'&&z!='u'&&y 

这是我的答案。

我已经为VOWELS声明了一个char []常量,然后实现了一个检查char是否是元音的方法(返回一个布尔值)。 在我的main方法中,我声明一个字符串并将其转换为一个字符数组,以便我可以将char数组的索引作为我的isVowel方法的参数传递:

 public class FindVowelsInString { static final char[] VOWELS = {'a', 'e', 'i', 'o', 'u'}; public static void main(String[] args) { String str = "hello"; char[] array = str.toCharArray(); //Check with a consonant boolean vowelChecker = FindVowelsInString.isVowel(array[0]); System.out.println("Is this a character a vowel?" + vowelChecker); //Check with a vowel boolean vowelChecker2 = FindVowelsInString.isVowel(array[1]); System.out.println("Is this a character a vowel?" + vowelChecker2); } private static boolean isVowel(char vowel) { boolean isVowel = false; for (int i = 0; i < FindVowelsInString.getVowel().length; i++) { if (FindVowelsInString.getVowel()[i] == vowel) { isVowel = true; } } return isVowel; } public static char[] getVowel() { return FindVowelsInString.VOWELS; } }