编写一个程序来接受句子并执行以下任务:
计算每个单词中存在的元音和辅音的数量
以条形图的形式生成频率的输出,其中V表示元音,C表示辅音,如下所示:
示例:
输入:-
你好吗?
输出:-
字数:
如何
V
CC
是
VV
C
你
VV
C
我要问的是,我如何打印 V 和 C,元音和辅音出现的次数..因为我可以用数字执行此操作(例如如果有 2 个元音,则打印 2),但我可以'用 char 值(这里是 V 和 C)来计算出来
我用 if 语句尝试了 for 循环..但这不起作用
请帮我解决这个问题...考试即将来临
这是一个例子。
为元音和辅音维护一个字符串;我正在使用 a 和 b。
使用 String#split 方法划分文本 s,并遍历每个值。
从这里开始,对于元音,将 x 增加 1,对于 辅音,将 y 增加 1。
在 loop 之后,使用 String#repeat 方法,为每个 x 和 y 打印出 "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