使用字符串方法查找和计算字符串中的元音?

xSp*_*nCx 9 java string

我有这个家庭作业的问题(我老实说,至少不要试图隐藏它)而且我在弄清楚如何去做这件事时遇到了问题.

鉴于以下声明: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)

但是,当我运行它时,它只会产生一堆空行.有人可以帮忙吗?

irr*_*ant 9

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++).


Why*_*rrh 9

我不认为需要在循环中使用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)

这会将字符串转换为小写,并检查字符串中的所有字符是否有元音.

  • 为什么在每次循环迭代中创建新的情人案例String?创建一个前循环将更有效恕我直言. (5认同)

Mas*_*ave 8

这可能/应该是一个单行

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方法