如何检查字符是否为元音?
这个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; } }