计算java中字符串中的元音

时间:2019-06-24 08:01:33

标签: java

我想计算字符串中每个单词的元音,并打印每个单词的元音数量。我只知道如何计算字符串中的所有元音,而我尝试过。但是我想要每个单词的元音数。我该如何打印?

String s="hai hello";
    int count=0;
    for(int i=0;i<s.length();i++)
    {
        if(s.charAt(i)=='a'||s.charAt(i)=='e'||s.charAt(i)=='i'||s.charAt(i)=='o'||s.charAt(i)=='u')
            count++;
    }
    System.out.println(count);

如果输入为“ hai hello”,则预期输出为“ 1 2”。

7 个答案:

答案 0 :(得分:1)

我试图解决您的问题

        String string = "hai hello";
        String[] wordAr = string.split(" ");
        int count = 0;
        for (String s : wordAr) {
            for (int i = 0; i < s.length(); i++) {
                if (s.charAt(i) == 'a' || s.charAt(i) == 'e' || s.charAt(i) == 'i' || s.charAt(i) == 'o' || s.charAt(i) == 'u') {
                    count++;
                }
            }
            System.out.print(count + "\t");
            count = 0;
        }

答案 1 :(得分:1)

您可以为此使用正则表达式...

String string = "hai hello";
String[] wordAr = string.split(" ");
for (String s : wordAr) {
    System.out.println(s.replaceAll("(?i)[^aeiouy]", "").length());
}

(?i)将使字符不区分大小写

答案 2 :(得分:0)

您可以在循环中使用condition:

if (s.charAt(i) == ' ' ) {
  system.out.println(count)
  count = 0;
}

每次看到空白时,它将打印并设置为零。

答案 3 :(得分:0)

您可以使用

String result = Arrays.asList(string.split(" ")).stream().map(s -> countVowel(s))
        .collect(Collectors.joining(" "));

其中countVowel返回字符串中的元音的nr(请参见“ pantha istiaque”答案)以获取整个结果

答案 4 :(得分:0)

public static Map<String, Integer> countVowelsByWords(String str) {
    Map<String, Integer> map = new HashMap<>();

    Arrays.stream(str.toLowerCase().split("[^a-z]+"))
          .distinct()
          .forEach(word -> {
              int count = 0;

              for (int i = 0; i < word.length(); i++) {
                  char ch = word.charAt(i);

                  if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')
                      count++;
              }

              map.put(word, count);
          });

    return map;
}

答案 5 :(得分:0)

您可以尝试以下代码:

import java.util.ArrayList;
import java.util.List;

public class Sam {
public static void main(String... args) {
    String str="hai hello";
    List<Integer> list=new ArrayList<>();
    String[] s=str.split(" ");
    for(int i=0;i<s.length;i++) {
         list.add(a(s[i])); 
    }
    System.out.println(list); //output : [2,2]      
}

static int a(String s) {
    int cou=0;
    for(int i=0;i<s.length();i++) {
        if(s.charAt(i)=='a'||s.charAt(i)=='e'||s.charAt(i)=='i'||s.charAt(i)=='o'||s.charAt(i)=='u') {
            cou++;
        }
    }
    return cou;
 }
}

答案 6 :(得分:0)

仅显示另一个简单的概念...将String#replaceAll()方法与Regular Expression(RegEx)一起使用可计算单词或字符串中的元音数量。

String#replaceAll()方法中使用的正则表达式("(?i)[^aeiou]")基本上告诉该方法用非的Null字符串(“” )替换所有字符a e i o u 无关的情况下。然后,我们将剩下的字符数(全部为元音)作为单词或字符串中的元音数量的计数,因为它们是唯一被替换的字符:

String a = "This sentence has vowels";
int vowelCount = 0;
String[] words = a.split("\\s+");
for (int i = 0; i < words.length; i++) {
    vowelCount = words[i].replaceAll("(?i)[^aeiou]", "").length();
    System.out.println("Word #" + (i + 1) + " [" + words[i] + 
                       "] contains " + vowelCount + " vowels.");
}

控制台输出显示如下:

Word #1 [This] contains 1 vowels.
Word #2 [sentence] contains 3 vowels.
Word #3 [has] contains 1 vowels.
Word #4 [vowels] contains 2 vowels.