使用java数组方法计算和显示字符串中的元音
我在这里寻找解决方案已经有一段时间了,但我无法找到需要的解决方案,我被要求做的那个。。。 所以我需要从用户那里得到一个字符串,并计算和显示字符串中的所有大写和小写元音。 以下是所需的输出:使用java数组方法计算和显示字符串中的元音,java,arrays,methods,char,Java,Arrays,Methods,Char,我在这里寻找解决方案已经有一段时间了,但我无法找到需要的解决方案,我被要求做的那个。。。 所以我需要从用户那里得到一个字符串,并计算和显示字符串中的所有大写和小写元音。 以下是所需的输出: Enter a string: IAMHERE a : occured 0 e : occured 0 i : occured 0 o : occured 0 u : occured 0 A : occured 1 O : occured 0 U : occured 0 I :
Enter a string:
IAMHERE
a : occured 0
e : occured 0
i : occured 0
o : occured 0
u : occured 0
A : occured 1
O : occured 0
U : occured 0
I : occured 1
E : occured 2
以下是我迄今为止所做的工作:
import java.util.Scanner;
public class CountVowels {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a string:");
String input = sc.next();
char[] chars = createArray(input);
countLet(chars);
}
static char[] createArray(String str) {
char[] chars = new char[str.length()];
for (int i = 0; i < chars.length; i++) {
chars[i] = str.charAt(i);
}
return chars;
}
static void countLet(char[] chars) {
char[] vowels = {'a', 'e', 'i', 'o', 'u', 'A', 'O', 'U', 'I', 'E'};
int numberOfVowels = 0;
for (int i = 0; i < chars.length; i++) {
if (chars[i] == vowels[i]) {
numberOfVowels++;
}
System.out.println(vowels[i] + " : occured " + numberOfVowels + " ");
}
}
}
那我能做什么 当您将
字符[i]
与元音[i]
进行比较时,会出现问题。由于您正在递增i
程序没有所需的输出
例如,字符串:Hello
:
H仅根据“a”进行检查
e仅与“e”对照检查
我只检查“我”
等等
这也意味着,如果字符串的长度大于元音.length
,则会出现IndexOutOfBounds异常
您需要检查每个字母是否为元音的代码:
for(char c:input){//循环遍历字符串中的每个字符
对于(char v:元音){//循环遍历每个元音
如果(c==v){//这个字母是元音
元音数目++;
break;//这个字母也不能是另一个元音,所以要从内部循环中分离出来
}
}
}
然后,您可以修改此项并将元音更改为
映射
,以便跟踪每个元音被看到的次数当您将字符[i]
与元音[i]
进行比较时,会出现问题。由于您正在递增i
程序没有所需的输出
例如,字符串:Hello
:
H仅根据“a”进行检查
e仅与“e”对照检查
我只检查“我”
等等
这也意味着,如果字符串的长度大于元音.length
,则会出现IndexOutOfBounds异常
您需要检查每个字母是否为元音的代码:
for(char c:input){//循环遍历字符串中的每个字符
对于(char v:元音){//循环遍历每个元音
如果(c==v){//这个字母是元音
元音数目++;
break;//这个字母也不能是另一个元音,所以要从内部循环中分离出来
}
}
}
然后,您可以修改此项并将元音更改为
映射
,以便跟踪每个元音出现的次数您必须在元音上迭代,并在此循环中计算当前元音出现的次数。在元音循环结束时,打印出您必须在元音上迭代的次数,并在此循环中,计算当前元音出现的次数。在元音循环的末尾,打印出times@Lino是的,忘记了它是一个原语for循环应该被交换,否则你就不能真正打印出你想要的输出have@Lino是的,忘记了它是一个原语for循环应该被交换,否则你就不能真正打印OP想要的输出
Enter a string:
IAMHERE
a : occured 0
e : occured 0
i : occured 0
o : occured 0
u : occured 0
A : occured 0
O : occured 0