我有这个家庭作业的问题(我老实说,至少不要试图隐藏它)而且我在弄清楚如何去做这件事时遇到了问题.
鉴于以下声明:String phrase ="WazzUp? - 谁是第一个??? - IDUNNO"; 编写必要的代码来计算字符串中元音的数量,并将适当的消息打印到屏幕上.
这是我到目前为止的代码:
String phrase = " WazzUp ? - Who's On FIRST ??? - IDUNNO";
int i, length, vowels = 0;
String j;
length = phrase.length();
for (i = 0; i < length; i++)
{
j = phrase.substring(i, i++);
System.out.println(j);
if (j.equalsIgnoreCase("a") == true)
vowels++;
else if (j.equalsIgnoreCase("e") == true)
vowels++;
else if (j.equalsIgnoreCase("i") == true)
vowels++;
else if (j.equalsIgnoreCase("o") == true)
vowels++;
else if (j.equalsIgnoreCase("u") == true)
vowels++;
}
System.out.println("Number of vowels: " + vowels);
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,它只会产生一堆空行.有人可以帮忙吗?
phrase.substring(i, i++);应该是phrase.substring(i, i + 1);.
i++给出值,i然后加1.当你拥有了它,现在,String j是有效的phrase.substring(i, i);,这始终是一个空字符串.
您不需要更改循环i体中的值,for因为它已经递增for (i = 0; i < length; i++).
我不认为需要在循环中使用print语句.
String s = "Whatever you want it to be.".toLowerCase();
int vowelCount = 0;
for (int i = 0, i < s.length(); ++i) {
switch(s.charAt(i)) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
vowelCount++;
break;
default:
// do nothing
}
}
Run Code Online (Sandbox Code Playgroud)
这会将字符串转换为小写,并检查字符串中的所有字符是否有元音.
这可能/应该是一个单行
System.out.println("the count of all vowels: " + (phrase.length() - phrase.replaceAll("a|e|i|o|u", "").length()));
Run Code Online (Sandbox Code Playgroud)
和它的String方法