Java Program to test if a character is uppercase/lowercase/number/vowel
Solution 1
If it weren't a homework, you could use existing methods such as Character.isDigit(char)
, Character.isUpperCase(char)
and Character.isLowerCase(char)
which are a bit "smarter", because they don't operate only in ASCII, but also in various charsets.
static final char[] VOWELS = { 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U' };
static boolean isVowel(char ch) {
for (char vowel : VOWELS) {
if (vowel == ch) {
return true;
}
}
return false;
}
static boolean isDigit(char ch) {
return ch >= '0' && ch <= '9';
}
static boolean isLowerCase(char ch) {
return ch >= 'a' && ch <= 'z';
}
static boolean isUpperCase(char ch) {
return ch >= 'A' && ch <= 'Z';
}
Solution 2
You don't need a for loop in your code.
Here is how you can re implement your method
- If input is between 'A' and 'Z' its uppercase
- If input is between 'a' and 'z' its lowercase
- If input is one of 'a,e,i,o,u,A,E,I,O,U' its Vowel
- Else Consonant
Edit:
Here is hint for you to proceed, Following code snippet gives int
values for char
s
System.out.println("a="+(int)'a');
System.out.println("z="+(int)'z');
System.out.println("A="+(int)'A');
System.out.println("Z="+(int)'Z');
Output
a=97
z=122
A=65
Z=90
Here is how you can check if a number x
exists between two numbers say a
and b
// x greater than or equal to a and x less than or equal to b
if ( x >= a && x <= b )
During comparisons char
s can be treated as numbers
If you can combine these hints, you should be able to find what you want ;)
Solution 3
In Java : Character class has static method called isLowerCase(Char ch) ans isUpperCase(Char ch) , Character.isDigit(Char ch)gives you Boolean value, base on that you can easily achieve your task
example:
String abc = "HomePage";
char ch = abc.charAt(i); // here i= 1,2,3......
if(Character.isLowerCase(ch))
{
// do something : ch is in lower case
}
if(Character.isUpperCase(ch))
{
// do something : ch is in Upper case
}
if(Character.isDigit(ch))
{
// do something : ch is in Number / Digit
}
Solution 4
Some comments on your code
- why would you want to have 2 for loops like
for(i='A';i<='Z';i++)
, if you can check this with a simpleif
statement ... you loop over a whole range while you can simply check whether it is contained in that range - even when you found your answer (for example when input is
A
you will have your result the first time you enter the first loop) you still loop over all the rest - your
System.out.println("Lowercase");
statement (and the uppercase statement) are placed in the wrong loop - If you are allowed to use it, I suggest to look at the
Character
class which has for example niceisUpperCase
andisLowerCase
methods
I leave the rest up to you since it is homework
Prnth
Updated on July 09, 2022Comments
-
Prnth almost 2 years
As I said before, how do I test if the entered character is one of the parameters? I've written this code, but it doesn't seem to run very well(or at all), no errors, however. Also, I need to use the basic code I've used here. Its for school and we lose points if we use things they haven't taught us (darn school).
class doody { public static void main(String[] args) { char i; char input='D'; for(i='A';i<='Z';i++)//check if uppercase { if(input==i){ System.out.println("Uppercase"); switch(input){ case 'A': case 'E': case 'I': case 'O': case 'U': System.out.println("Vowel"); break; default: System.out.println("Not a vowel"); break;} } for(i='a';i<='z';i++)//check if lowercase { if(input==i){ System.out.println("Lowercase"); switch(input){ case 'a': case 'e': case 'i': case 'o': case 'u': System.out.println("Vowel"); break; default: System.out.println("Not a vowel"); break; }} for(i='0';i<='9';i++)//check if number { if(input==i) System.out.println("Number"); } } }}}
Edit: Here is some code I threw together today. Much simpler. I don't know why this didn't occur to me earlier. It was probably because I was groggy, it was late.
class doody { public static void main(String[] args) { char input='$';//input here. boolean lorn=false; if(input>='a'&&input<='z') {System.out.println("Lowercase"); lorn=true; if(input=='a')System.out.println("Vowel."); if(input=='e')System.out.println("Vowel."); if(input=='i')System.out.println("Vowel."); if(input=='o')System.out.println("Vowel."); if(input=='u')System.out.println("Vowel."); } if(input>='A'&&input<='Z') {System.out.println("Uppercase"); lorn=true; if(input=='A')System.out.println("Vowel."); if(input=='E')System.out.println("Vowel."); if(input=='I')System.out.println("Vowel."); if(input=='O')System.out.println("Vowel."); if(input=='U')System.out.println("Vowel."); } if(input>='0'&&input<='9') { lorn=true; System.out.println("Number"); } if(lorn==false)System.out.println("It is a special character"); } }
-
Prnth over 12 yearsHow do I test if it is between A and Z? I'm a Java noob, you see.
-
Prnth over 12 yearsHow do I test if it is within a range? Do I need to use one of those...array things? Thanks for the "System out in the wrong loop" thing. I'll fix that now.
-
Prnth over 12 yearsI know about that, but we haven't been taught it in school. We have to stick to what the teacher has taught us. I lost heaps of marks in the exams for writing things the teacher hadn't taught us.
-
JB Nizet over 12 yearsYou already do it:
for(i='A';i<='Z'
.i
starts withA
, and the loop continues while i is lower than (or equal to)Z
. -
MozenRath over 12 yearsthen i think you should use 2 separate booleans to set the properties of uppercase/lowercase and consonant/vowels then do a print based on those booleans
-
Prnth over 12 yearsGreat idea, good sir. I'm going to bed now, its late here, but I will work on it as soon as I get back from school tomorrow, and put an updated version here.
-
Voo over 12 years@JB I can understand why you wouldn't want to confuse him and keep with his approach, but I think we should tell beginners their obvious problems and give them better solutions. The for-if anti pattern isn't something even beginners should get used to.
-
JB Nizet over 12 yearsThis isn't my point. He asked how to test if a char is between A and Z, and I told him that he already did that in his original code, since its loop uses such a comparison already.