web-dev-qa-db-fra.com

Programme Java pour tester si un caractère est en majuscule/minuscule/nombre/voyelle

Comme je l'ai déjà dit, comment puis-je vérifier si le caractère saisi est l'un des paramètres? J'ai écrit ce code, mais il ne semble pas fonctionner très bien (ou pas du tout), pas d'erreur cependant. De plus, je dois utiliser le code de base que j'ai utilisé ici. C'est pour l'école et nous perdons des points si nous utilisons des choses qu'ils ne nous ont pas apprises (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: Voici un code que j'ai jeté ensemble aujourd'hui. Beaucoup plus simple. Je ne sais pas pourquoi cela ne m'est pas arrivé plus tôt. C'était probablement parce que j'étais groggy, il était tard.

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
Prnth

Vous n'avez pas besoin d'une boucle for dans votre code.

Voici comment vous pouvez re-implémenter votre méthode

  • Si l'entrée est entre 'A' et 'Z', sa majuscule
  • Si l'entrée est entre 'a' et 'z', sa minuscule
  • Si l'entrée est l'une de 'a, e, i, o, u, A, E, I, O, U' sa voyelle
  • Autre consonant

Modifier:

Voici un indice pour que vous puissiez continuer, L'extrait de code suivant donne les valeurs int pour chars.

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

Sortie

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

Voici comment vérifier si un nombre x existe entre deux nombres, par exemple a et b

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

Pendant les comparaisons, chars peut être traité comme un nombre

Si vous pouvez combiner ces astuces, vous devriez pouvoir trouver ce que vous voulez;)

11
Prashant Bhate

S'il ne s'agissait pas d'un devoir, vous pouvez utiliser les méthodes existantes telles que Character.isDigit(char), Character.isUpperCase(char) et Character.isLowerCase(char) qui sont un peu "plus intelligentes", car elles ne fonctionnent pas uniquement en ASCII, mais également dans différents jeux de caractères.

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

En Java: La classe Character a une méthode statique appelée isLowerCase (Char ch) et isUpperCase (Char ch), Character.isDigit (Char ch) vous donne une valeur booléenne, sur laquelle vous pouvez facilement réaliser votre tâche.

exemple: 

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
}
5
Chetan Bhoyar

Quelques commentaires sur votre code

  • pourquoi voudriez-vous avoir 2 boucles for telles que for(i='A';i<='Z';i++), si vous pouvez vérifier cela avec une simple instruction if ... vous passez en boucle sur une plage entière alors que vous pouvez simplement vérifier si elle est contenue dans cette plage
  • même lorsque vous avez trouvé votre réponse (par exemple, lorsque la saisie est A, vous obtiendrez votre résultat la première fois que vous entrerez dans la première boucle), vous passerez toujours au-dessus de tout le reste
  • votre déclaration System.out.println("Lowercase"); (et la déclaration majuscule) sont placées dans la mauvaise boucle
  • Si vous êtes autorisé à l'utiliser, je suggère de regarder la classe Character qui contient, par exemple, les méthodes Nice isUpperCase et isLowerCase

Je laisse le reste à vous car c'est un devoir

2
Robin

Vous semblez avoir des majuscules et des minuscules. A-Z serait supérieur, a-z serait inférieur. Bien que pas tout à fait efficace - avec l'exception de cas inversé, je pense qu'il devrait produire correctement.

0
Dan Hardiker

Ceci est votre devoir, donc je suppose que vous devez utiliser les boucles et changer de déclaration ... C'est de l'OK, mais pourquoi toutes vos boucles sont-elles intérieures aux plus privées?

Il suffit de les sortir au même "niveau" et votre code est parfait! (une partie du mix up/up).

Un conseil: il est gratuit d'appuyer sur les touches "Entrée" et "Espace" supplémentaires! .__ (C'est la première chose que j'ai faite à votre code et le problème est devenu très trivial)

0
222
 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
 }
0
d.moncada

Ce n'est peut-être pas ce que vous recherchez, mais je pensais que vous deviez connaître le véritable moyen de le faire. Vous pouvez utiliser la fonction isUpperCase() de la classe Java.lang.Character pour obtenir des informations sur la casse du caractère. Vous pouvez utiliser isDigit() pour différencier les chiffres et les lettres (Ceci est juste pour votre information :)). Vous pouvez ensuite faire un toUpperCase() et ensuite changer pour les voyelles. Cela améliorera la qualité de votre code.

0
MozenRath