资本元音数量

时间:2015-11-21 23:25:20

标签: java if-statement

我试图从用户的输入中计算出资本元音。这是我的代码,它不断打印我输入的内容,我无法打印输入多少个国会大厦元音字母。我错过了什么?

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

3 个答案:

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