首先,请原谅我的英语不好。这不是我的母语(这是我的一个问题,你稍后会看到原因)。
我正在用Java创建一个方法,并建议计算一个字符串的元音。输入来自windows提示符,因为我分别使用javac和java命令编译和执行。
我已经编写了一些代码来解决这个练习,但我不能算出带有重音符号的元音。例如。当我尝试“canción”时,它的输出只计算2个元音。
public static int countVowels(String text){
int answer = 0;
String test = "AEIOUaeiou";
for (int i = 0; i < text.length(); i++)
for (int j = 0; j < test.length(); j++)
if (text.charAt(i) == test.charAt(j)) {
answer++;
break;
}
return answer;
}
public static void form() {
Scanner in = new Scanner(System.in);
System.out.println("This program counts the number of vowels.");
int answer = 0;
String text = "";
while (!text.equals("-1")) {
System.out.print("Enter a line of text (-1 to exit): ");
text = in.nextLine();
answer = Character.countVowels(text);
System.out.println("Number of vowels: " + answer);
}
System.out.println("Closing the program...");
}
我正在使用Scanner作为输入法。
我尝试比较2个字符串,因为我认为使用if(text.charAt(i) == 'A')
只是很无聊(也许我错了)。
真的我不知道该怎么做。我尝试过使用Ascii值(193 =Á),我尝试在测试字符串String test = "AEIOUaeiouÁÉÍÓÚáéíóú";
中编写带有重音符号的de元音。
没有任何作用。我将非常感谢能帮助我的人。
PS,我不允许使用数组。
答案 0 :(得分:1)
计算“元音”的最简单方法就是单行:
int vowelCount = str.replaceAll("[^AEIOUaeiouÁÉÍÓÚáéíóú]", "").length();
此查找使用正则表达式和删除(替换为空白)所有字符,而不是列出的字符之一(通过否定字符类)。