用于测试字符是否为大写/小写/数字/元音的Java程序

正如我之前所说,如何测试输入的字符是否是参数之一? 我已经编写了这段代码,但它似乎运行得不好(或根本没有),但没有错误。 另外,我需要使用我在这里使用的基本代码。 它用于学校,如果我们使用他们没有教过我们的东西(学校),我们就会失去分数。

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"); } } }}} 

编辑:这是我今天汇集的一些代码。 更简单。 我不知道为什么我之前没有发生这种情况。 可能是因为我昏昏沉沉,已经很晚了。

 class doody { public static void main(String[] args) { char input='$';//input here. boolean lorn=false; if(input>='a'&&input='A'&&input='0'&&input<='9') { lorn=true; System.out.println("Number"); } if(lorn==false)System.out.println("It is a special character"); } } 

如果它不是作业,你可以使用现有的方法,如Character.isDigit(char)Character.isUpperCase(char)Character.isLowerCase(char) ,这些方法有点“更聪明”,因为它们不仅仅运行在ASCII中,但也在各种字符集中。

 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'; } 

您的代码中不需要for循环。

以下是如何重新实现方法的方法

  • 如果输入在’A’和’Z’之间,则为大写
  • 如果输入在’a’和’z’之间,则为小写
  • 如果输入是’a,e,i,o,u,A,E,I,O,U’之一的元音
  • 其他辅音

编辑:

以下是提示您继续,以下代码片段为char提供int

 System.out.println("a="+(int)'a'); System.out.println("z="+(int)'z'); System.out.println("A="+(int)'A'); System.out.println("Z="+(int)'Z'); 

产量

 a=97 z=122 A=65 Z=90 

以下是检查两个数字ab之间是否存在数字x

 // x greater than or equal to a and x less than or equal to b if ( x >= a && x <= b ) 

在比较期间, char可以被视为数字

如果你能结合这些提示,你应该能够找到你想要的东西;)

在Java中:Character类有静态方法叫做isLowerCase(Char ch)和isUpperCase(Char ch),Character.isDigit(Char ch)给你布尔值,基于你可以轻松实现你的任务

例:

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 } 

对您的代码有一些评论

  • 为什么你想要2个for循环,比如for(i='A';i<='Z';i++) ,如果你可以用一个简单的if语句检查这个...你可以循环遍及整个范围只需检查它是否包含在该范围内
  • 即使您找到答案(例如,当输入为A您将在第一次进入第一个循环时获得结果),您仍然会遍历其余所有答案
  • 你的System.out.println("Lowercase"); statement(和大写语句)放在错误的循环中
  • 如果允许你使用它,我建议你看一下Character类,它有一个很好的isUpperCaseisLowerCase方法

因为它是家庭作业所以我把剩下的留给你了

您似乎从前到后都有大写和小写。 AZ会上限,az会更低。 虽然不完全有效 – 在倒置情况例外情况下,我认为它应该正确输出。

这可能不是你想要的,但我认为你应该知道这样做的真正方法。 您可以使用java.lang.Character类的isUpperCase()来查找有关该字符大小写的内容。 您可以使用isDigit()来区分数字和字母(这只是FYI :))。 然后,您可以执行toUpperCase() ,然后切换元音。 这将提高您的代码质量。

这是你的功课,所以我假设你需要使用循环和切换语句。 那没关系,但是为什么你所有的循环都是内在的呢?

只需将它们带到相同的“级别”,您的代码就可以了! (部分为低/向上混合)。

小贴士:按额外的’Enter’和’Space’是免费的! (这是我对你的代码做的第一件事,问题变得非常简单)

  Char input; if (input.matches("^[a-zA-Z]+$")) { if (Character.isLowerCase(input)) { // lowercase } else { // uppercase } if (input.matches("[^aeiouAEIOU]")) { // vowel } else { // consonant } } else if (input.matches("^(0|[1-9][0-9]*)$")) { // number } else { // invalid }