我想计算字符串中每个单词的元音,并打印每个单词的元音数量。我只知道如何计算字符串中的所有元音,而我尝试过。但是我想要每个单词的元音数。我该如何打印?
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”。
答案 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.