返回每个元音

时间:2015-04-21 14:42:02

标签: java

public class one
{
    public static void main(String [] args)
    {       
    }

    public static int vowels( String s )
    {
        int countA = 0; int countE = 0; int countI = 0; 
        int countO = 0; int countU = 0;
        for(int i = 0; i < s.length(); i++)
        {
            if(s.charAt(i) == 'a')
            {
                countA++;
            }
            else if(s.charAt(i) == 'e')
            {
                countE++;
            }
            else if(s.charAt(i) == 'i')
            {
                countI++;
            }
            else if(s.charAt(i) == 'o')
            {
                countO++;
            }
            else if(s.charAt(i) == 'u')
            {
                countU++;
            }
        }
        return countA; return countE; return countI;
        return countO; return countU;
    }
}

我正在制作的节目将计算字符串中元音的数量。我正在尝试将其应用于main并输出结果。我试着做下面不同的回报,但它不起作用..

2 个答案:

答案 0 :(得分:3)

您只能从方法调用返回单个值。但是,该值可以是数组或集合。

需要考虑两个选项:

  • 更改您的方法以接受“要计数的字符”出现的第二个参数,并将其调用5次。
  • 更改方法以返回数组,其中元素0是As的计数,元素1是Es等的计数

第一种方法更清洁,更可重复使用(IMO),但效率较低。你有类似的东西:

String text = ...;
System.out.println("The vowel a appears " + count(text, 'a') + " times.");
System.out.println("The vowel e appears " + count(text, 'e') + " times.");
System.out.println("The vowel i appears " + count(text, 'i') + " times.");
System.out.println("The vowel o appears " + count(text, 'o') + " times.");
System.out.println("The vowel u appears " + count(text, 'u') + " times.");

...

private static int count(String text, char charToCount) {
    int count = 0;
    for (int i = 0; i < text.length(); i++) {
        if (text.charAt(i) == charToCount) {
            count++;
        }
    }
    return count;
}

答案 1 :(得分:2)

return语句退出您的方法并返回您指定的一个值。所有剩下的return都是无法访问的,当你到达它们时,这个方法就已经离开了。

任何方法只有一种返回类型(读取您自己编写的方法的签名)并返回一个只能分配给单个变量的值。但是既然你没有写return coutA, countE, ...;之类的东西,我想你不想同时将结果分配给多个变量,而是期望像Python中的yield语句那样的类似生成器的行为。和C#提供。 Java没有内置于语言中的生成器,您必须创建一个实现java.lang.Iterable的匿名类。

在你的情况下没有必要这样做。你真正需要的是:

  • 分别为每个元音调用此方法,或

  • 使用一些容纳所有结果的容器。

对于第一个选项,您将拥有以下内容:

public static int countVowel(String str, char vowel) {
    int count = 0;
    for (int i = 0; i < str.length(); i++) {
        if (str.charAt(i) == vowel) {
            count++;
        }
    }
    return count;
}

如果您想使用一个循环计算所有元音,可以使用数组,Map或您自己的对象以及相应的字段来存储结果并将其传递给调用者。