有没有可以对char值进行计数的函数?

问题描述 投票:0回答:1

编写一个程序来接受句子并执行以下任务:

  1. 计算每个单词中存在的元音和辅音的数量

  2. 以条形图的形式生成频率的输出,其中V表示元音,C表示辅音,如下所示:

示例:

输入:-

你好吗?

输出:-

字数:

如何
V

CC


VV

C


VV

C

我要问的是,我如何打印 V 和 C,元音和辅音出现的次数..因为我可以用数字执行此操作(例如如果有 2 个元音,则打印 2),但我可以'用 char 值(这里是 V 和 C)来计算出来

我用 if 语句尝试了 for 循环..但这不起作用

请帮我解决这个问题...考试即将来临

java string char counter frequency
1个回答
0
投票

这是一个例子。

元音辅音维护一个字符串;我正在使用 ab
使用 String#split 方法划分文本 s,并遍历每个值。
从这里开始,对于元音,将 x 增加 1,对于 辅音,将 y 增加 1
loop 之后,使用 String#repeat 方法,为每个 xy 打印出 "V""C" 的出现。

String s = "HOW ARE YOU?",
       a = "aeiou",
       b = "bcdfghjklmnpqrstvwxyz";
int i, n, x, y;
char c;
for (String w : s.split(" +")) {
    System.out.println(w);
    x = y = 0;
    for (i = 0, n = w.length(); i < n; i++) {
        c = Character.toLowerCase(s.charAt(i));
        if (a.indexOf(c) != -1) x++;
        else if (b.indexOf(c) != -1) y++;
    }
    System.out.println("V".repeat(x));
    System.out.println("C".repeat(y));
    System.out.println();
}

或者,利用 Scanner 类来遍历每个单词。

Scanner s = new Scanner("HOW ARE YOU?");
String w, a = "aeiou",
       b = "bcdfghjklmnpqrstvwxyz";
int i, n, x, y;
char c;
while (s.hasNext()) {
    System.out.println(w = s.next());
    x = y = 0;
    for (i = 0, n = w.length(); i < n; i++) {
        c = Character.toLowerCase(w.charAt(i));
        if (a.indexOf(c) != -1) x++;
        else if (b.indexOf(c) != -1) y++;
    }
    System.out.println("V".repeat(x));
    System.out.println("C".repeat(y));
    System.out.println();
}

输出

HOW
V
CC

ARE
V
CC

YOU?
V
CC
© www.soinside.com 2019 - 2024. All rights reserved.