在数组中打印元音的Java程序?
我正在编写一个程序来查找数组中每个单词的元音数。我已经完成了代码,我只是不确定if语句后面的返回值应该是什么在数组中打印元音的Java程序?,java,return,return-value,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
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;
}
}
公共静态int元音(char[]数组,int x,int y){
如果(数组[x]='a'| |数组[x]='e'| |数组[x]='i'| |数组[x]='o'| |
数组[x]='u'| |数组[x]='y'){
y++;
}
如果(x而不是
vowels (array, x, y);
return ???;
您应该返回由元音计算的值,因为它是一个干净的函数,并且没有副作用:
return vowels (array, x, y);
在这里使用递归是一个非常丑陋的解决方案。如果您将其改写为:
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;
}
公共静态int元音(char[]数组,int x){
int y=0;
如果(数组[x]='a'| |数组[x]='e'| |数组[x]='i'| |数组[x]='o'||
数组[x]='u'| |数组[x]='y')
y++;
if(x
如果我理解正确-
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;
}
- 首先,我要准备一张元音图
- 其次,我将迭代我的数组并检查每个元素是否
它们存在于地图中。如果存在,请更新计数器。否则,
继续检查其他元素
示例代码:
Map元音=新HashMap(){
{
放(a)字;
放("e",");;
把(“我”、“我”);
放("o",");;
放(u)字;
把(“y”,放在“);
}
};
字符串输入=“blabla”;
int计数器=0;
对于(int i=0;i
以下是该程序的解决方案-
公开课{
公共静态void main(字符串[]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++;
}
请注意,in x应该小于array.length-1,因为它的值正在递增。否则它将抛出索引越界异常
if (x < (array.length-1)) {
x++;
return vowels (array, x, y);
} else {
return y;
}
//return -1;
}
}
if(x<(数组长度-1)){
x++;
返回元音(数组,x,y);
}否则{
返回y;
}
//返回-1;
}
}
干杯,+1感谢您尝试递归。我认为返回y应该可以。尝试一下,然后告诉我们y
的含义是什么?因为答案很明显,这似乎是学习递归的一项任务。因此,我建议您尝试完全自己编写此函数,并请您的导师而不是stackoverflow。然后为什么不使用HashSet。。. :?
if (x < (array.length-1)) {
x++;
return vowels (array, x, y);
} else {
return y;
}
//return -1;
}
}