我试图从用户的输入中计算出资本元音。这是我的代码,它不断打印我输入的内容,我无法打印输入多少个国会大厦元音字母。我错过了什么?
import java.util.Scanner;
public class CountVowel {
public static void main (String args[])
{
Scanner input = new Scanner( System.in );
int count =0;
String s;
while(input.hasNext()){
s = input.nextLine();
for(int i = 0; i<s.length();i++){
char a =s.charAt(i);
if(a=='A'||a=='E'||a=='I'||a=='O'||a=='U'){
}
System.out.print(a);
}
}
}
}
答案 0 :(得分:1)
你的专栏:
System.out.print(a);
正在打印您正在阅读的字符。另外,您永远不会更新您的计数变量。您需要将count++
放入if语句中,然后移动并修改print语句
public static void main (String args[]) {
Scanner input = new Scanner( System.in );
int count =0;
String s;
while(input.hasNext()){
s = input.nextLine();
for(int i = 0; i<s.length();i++){
char a =s.charAt(i);
if(a=='A'||a=='E'||a=='I'||a=='O'||a=='U'){
count++;
}
}
}
System.out.println(count);
}
答案 1 :(得分:0)
更改,
if(a=='A'||a=='E'||a=='I'||a=='O'||a=='U'){
}
System.out.print(a);
}
增加计数,而不是print
a
(这是您的输入),然后在循环后打印计数。像
if(a=='A'||a=='E'||a=='I'||a=='O'||a=='U'){
count++;
}
// System.out.print(a);
}
System.out.println(count);
你也可以使用正则表达式,如
s = input.nextLine()
int count = s.replaceAll("[^AEIOU]","").length();
System.out.printf("%s contains %d capital vowels.%n", s, count);
答案 2 :(得分:0)
或者您可以使用lambda表达式轻松执行此任务,如下所示:
String looking_for = "[AEIOU]";
Scanner s = new Scanner(System.in);
List<String> list = Arrays.asList(s.nextLine().replace(" ", "").split(""));
long count = list.stream().filter(v -> v.matches(looking_for)).count();
System.out.println("Capital Vowel count is - "+count);