Java 如何计算字符串中的元音,包括有重音符号的元音?

Java 如何计算字符串中的元音,包括有重音符号的元音?,java,compare,character,ascii,diacritics,Java,Compare,Character,Ascii,Diacritics,首先,请原谅我英语不好。这不是我的母语(这是我的问题之一,你稍后会看到原因) 我正在用Java制作一个方法,它被提议计算字符串的元音。输入来自windows提示符,因为我分别使用javac和java命令编译和执行 我已经写了几行代码来解决这个问题,但是我不能计算有重音符号的元音。当我尝试“canción”时,它的输出只包含2个元音 public static int countVowels(String text){ int answer = 0; String test = "

首先,请原谅我英语不好。这不是我的母语(这是我的问题之一,你稍后会看到原因)

我正在用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...");
} 
public静态整数元音(字符串文本){
int-answer=0;
字符串测试=“AEIOUaeiou”;
对于(int i=0;i
我用扫描仪作为输入法

我试着比较两个字符串,因为我认为使用
if(text.charAt(I)='A')
很无聊(也许我错了)

真的,我不知道该怎么办。我试过使用Ascii值(193=Á),我试过只在测试字符串
String test=“AEIOUaeiouÁ×Úáíóú”中用重音符号写去元音

什么都不管用。我将非常感谢能帮助我的人。

PS,我不允许使用数组。

计算“元音”的最简单方法是一行:

int vowelCount = str.replaceAll("[^AEIOUaeiouÁÉÍÓÚáéíóú]", "").length();

此查找使用正则表达式并删除(替换为空白)所有未列出的字符(通过负字符类)。

我不会调用您的类
character
,因为该名称与
java.lang.character
冲突。一般来说,不要使用
java.lang
包中存在的类名,因为这会导致很多混淆,因为它会自动导入到每个java源文件中。谢谢你的建议,我将编辑.Hmm。据我所知,我们不能计算重音元音,除非我们把它们也包括在if子句中。这将意味着识别所有可能的重音字符,即元音,并在每次遇到元音时增加一个计数器。