Use string methods to find and count vowels in a string?
I have this problem for homework (I'm being honest, not trying to hide it at least) And I'm having problems figuring out how to do it.
Given the following declarations : String phrase = " WazzUp ? - Who's On FIRST ??? - IDUNNO"; Write the necessary code to count the number of vowels in the string and print appropriate message to the screen.
Here's the code I have so far:
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);
However, when I run it it just makes a bunch of blank lines. Can anyone help?
phrase.substring(i, i++);
should be phrase.substring(i, i + 1);
.
i++
gives the value of i
and then adds 1 to it. As you have it right now, String j
is effectively phrase.substring(i, i);
, which is always the empty string.
You don't need to change the value of i
in the body of the for
loop since it is already incremented in for (i = 0; i < length; i++)
.
I don't see the need to have a print statement in the loop.
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
}
}
This converts the string to lowercase, and checks all the characters in the string for vowels.