用于在数组中打印元音的Java程序?

时间:2013-02-01 07:33:22

标签: java return return-value

我正在编写一个程序来查找数组中每个单词的元音数量。我已经完成了代码,我只是不确定if语句后的返回值应该是什么。

public static int vowels(char [] array, int x, int y) {
    if(array[x]=='a' || array[x]=='e' || array[x]=='i' || array[x]=='o' || 
                                         array[x]=='u' || array[x]=='y') {
        y++;
    }
    if (x < array.length) {
        x++;
        vowels (array, x, y);
        return ???;
    } else {
        return y;
    }
}

5 个答案:

答案 0 :(得分:2)

而不是

vowels (array, x, y);
return ???;

你应该返回由元音计算的值,因为它是一个干净的函数,并且没有副作用:

return vowels (array, x, y);

答案 1 :(得分:1)

如果我理解正确 -

private static String vowelString = new String("aeiou");
public static int vowels(char [] array) {
        int x=0;
        for(char ch:array) {
            if(vowelString.indexOf(ch)>=0)
                x++;
        }
        return x;
    }

答案 2 :(得分:0)

在这里使用递归是一个非常难看的解决方案。如果你重写它会更简单:

public static int vowels(char[] array) {
    int y = 0;
    for (char x : array) {
        if (x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u' || x == 'y')
            y++;
    }
    return y;
}

但是如果你真的需要使用递归(例如,这是你的功课,这是你的任务,你必须使用它),那么你需要修复代码中的一些错误并删除y参数 - 它是不必要的:

public static int vowels(char[] array, int x) {
    int y = 0;
    if (array[x] == 'a' || array[x] == 'e' || array[x] == 'i' || array[x] == 'o' ||
            array[x] == 'u' || array[x] == 'y')
        y++;
    if (x < array.length - 1) {
        x++;
        y += vowels(array, x);
    }
    return y;
}

答案 3 :(得分:0)

  • 首先,我会准备一个地图的元音。
  • 其次,我会迭代我的数组并检查每个元素是否 它们存在于地图中。如果存在,请更新计数器。除此以外, 继续检查其他元素。

示例代码:

Map<String, String> vowels = new HashMap<String, String>() {
    {
        put("a", "");
        put("e", "");
        put("i", "");
        put("o", "");
        put("u", "");
        put("y", "");
    }
};

String input = "blablabla";
int counter = 0;

for (int i = 0; i < input.length(); i++) {
    if (vowels.containsKey(input.charAt(i) + ""))
        counter++;
}

答案 4 :(得分:0)

这是该计划的解决方案 -

公共课所以{     public static void main(String [] args){         // TODO自动生成的方法存根

    char array[] = {'a', 'e', 'i', 'x', 'h', 't', 'd' };
    System.out.print( vowels(array, 0, 0));
}

public static int vowels(char [] array, int x, int y) {
    if(array[x]=='a' || array[x]=='e' || array[x]=='i' || array[x]=='o' || 
                                         array[x]=='u' || array[x]=='y') {
        y++;
    }

请注意,x应该小于array.length-1,因为它的值会增加。否则会抛出索引越界异常

    if (x < (array.length-1)) {
        x++;
        return vowels (array, x, y);

    } else {
        return y;
    }
    //return -1;
   }
}

干杯,