java如何在用户输入String中显示所有元音

时间:2014-12-16 16:12:08

标签: java arrays string

我试图让用户输入一个字符串,然后显示用户输入字符串中找到的所有元音,这是我的代码,但它无法显示正确的结果。

如果用户输入: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] + "  ");
         }
       }
     }
    }
}

2 个答案:

答案 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);
        }
    }
}