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

时间:2012-01-22 15:07:14

标签: java uppercase lowercase

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

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

8 个答案:

答案 0 :(得分:11)

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

以下是如何重新实施方法

  • 如果输入介于&#39; A&#39;和&#39; Z&#39;大写
  • 如果输入介于&#39; a&#39;和&#39; z&#39;它的小写
  • 如果输入是&#39; a,e,i,o,u,A,E,I,O,U&#39;它的元音
  • Else Consonant

修改

以下是提示您继续操作,以下代码段为int提供char个值

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

以下是检查xa

两个数字之间是否存在b个数字的方法
// x greater than or equal to a and x less than or equal to b
if ( x >= a && x <= b ) 

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

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

答案 1 :(得分:11)

如果它不是作业,您可以使用现有方法,例如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';
}

答案 2 :(得分:7)

在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
}

答案 3 :(得分:2)

对您的代码的一些评论

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

由于这是家庭作业,我把剩下的留给你了

答案 4 :(得分:0)

您似乎从前到后都有大写和小写。 A-Z将是上限,a-z将更低。虽然效率不高 - 但是反转的情况例外,我认为它应该输出正确。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

这是你的作业,所以我假设你需要使用循环和切换语句。 那是O.K,但是为什么你所有的循环都是内在的呢?

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

小贴士:按额外的'Enter'&amp; '太空'是免费的! (这是我对你的代码做的第一件事,问题变得非常简单)

答案 7 :(得分:0)

 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
 }