2014-12-16 2 views
0

Я пытаюсь дать пользователю ввести строку, а затем отобразить все гласные, найденные в строке ввода пользователя, это мой код, но он не смог отобразить правильные результаты.java как отображать все гласные в пользовательском вводе 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] + " "); 
     } 
     } 
    } 
    } 
} 
+1

Вы должны проверить, содержит ли ваши входные sChars любой гласные. Прямо сейчас вы проверяете, что вход точно такой же, как и массив гласных. – user1717259

+0

По какой причине вы не используете для этого регулярные выражения? – rrirower

ответ

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]+ " "); 
     } 
    } 
} 
0

Я хотел бы начать с написания метод, чтобы проверить, является ли символ гласного (и вы можете использовать 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); 
     } 
    } 
} 
Смежные вопросы