我试图让用户输入一个字符串,然后显示用户输入字符串中找到的所有元音,这是我的代码,但它无法显示正确的结果。
如果用户输入:I'm desperate
结果应该是字符串中的所有元音:i, e, e, a, e
import java.util.Scanner;
public class Lab7stringvowels {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner (System.in);
System.out.println ("Enter a string:");
String s = input.nextLine();
char [] sChars = s.toCharArray();
char[] vowels = {'a','e','i','o','u'};
for (int j = 0 ; j < sChars.length ; j ++ ) {
for (int i = 0; i < vowels.length ; i++ ) {
if ( sChars == vowels) {
System.out.print(vowels[i] + " ");
}
}
}
}
}
答案 0 :(得分:4)
您不应直接比较数组以查找元音,而是必须将数组名称与for循环中的索引结合使用。
//Initialize your arrays
for (int j = 0 ; j < sChars.length ; j ++ ) {
for (int i = 0; i < vowels.length ; i++ ) {
if ( sChars[j] == vowels[i]) {
System.out.print(vowels[i]+ " ");
}
}
}
答案 1 :(得分:1)
我首先编写一个方法来测试一个字符是否是一个元音(你可以使用Character.toLowerCase(char)
忽略大小写)。像,
public static boolean isVowel(char ch) {
switch (Character.toLowerCase(ch)) {
case 'a': case 'e': case 'i': case 'o': case 'u':
return true;
}
return false;
}
或者,你可能更喜欢像
这样的东西public static boolean isVowel(char ch) {
return "aeiou".contains(Character.toString(Character.toLowerCase(ch)));
}
然后您可以使用for-each
loop之类的
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter a string:");
String s = input.nextLine();
for (char ch : s.toCharArray()) {
if (isVowel(ch)) {
System.out.printf("%c ", ch);
}
}
}