Pregunta Programa Java para comprobar si un carácter está en mayúscula / minúscula / número / vocal [cerrado]


Como dije antes, ¿cómo puedo probar si el carácter ingresado es uno de los parámetros? He escrito este código, pero parece que no funciona muy bien (o no funciona), sin embargo, no hay errores. Además, necesito usar el código básico que he usado aquí. Es para la escuela y perdemos puntos si usamos cosas que no nos han enseñado (maldita escuela).

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

    }

}}}

Editar: Aquí hay un código que arrojé hoy. Mucho más simple No sé por qué esto no se me ocurrió antes. Probablemente fue porque estaba atontado, era tarde.

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
2018-01-22 15:07


origen


Respuestas:


Si no fuera una tarea, podrías usar métodos existentes como Character.isDigit(char), Character.isUpperCase(char) y Character.isLowerCase(char) que son un poco "más inteligentes", porque no operan solo en ASCII, sino también en varios conjuntos de caracteres.

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
2018-01-22 16:02



No necesita un bucle for en su código.

Aquí es cómo puedes volver a implementar tu método

  • Si la entrada está entre 'A' y 'Z' su mayúscula
  • Si la entrada está entre 'a' y 'z' es minúscula
  • Si la entrada es una de 'a, e, i, o, u, A, E, I, O, U' su Vocal
  • Else Consonant

Editar:

Aquí hay una pista para que continúes. El siguiente fragmento de código da int valores para 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');

Salida

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

Aquí es cómo puede verificar si un número x existe entre dos números dicen a y b

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

Durante las comparaciones chars pueden ser tratados como números

Si puede combinar estos consejos, debería poder encontrar lo que desea;)


11
2018-01-22 15:13



En Java: la clase de caracteres tiene un método estático llamado isLowerCase (Char ch) ans isUpperCase (Char ch), Character.isDigit (Char ch) le da un valor booleano, base en la que puede realizar fácilmente su tarea

ejemplo:

String abc = "Página de inicio";

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
2017-10-16 12:41



Algunos comentarios sobre tu código

  • ¿Por qué querrías tener 2 bucles for like for(i='A';i<='Z';i++), si puedes verificar esto con un simple if declaración ... recorre todo un rango mientras que simplemente puede verificar si está dentro de ese rango
  • incluso cuando encontraste tu respuesta (por ejemplo cuando la entrada es A Tendrás tu resultado la primera vez que ingreses al primer ciclo) aún sigues el resto
  • tu System.out.println("Lowercase"); declaración (y la declaración en mayúsculas) se colocan en el bucle equivocado
  • Si puede usarlo, le sugiero que mire la Character clase que tiene, por ejemplo, agradable isUpperCase y isLowerCase métodos

Te dejo el resto puesto que es tarea


2
2018-01-22 15:15



Parece que tiene mayúsculas y minúsculas de atrás para adelante. A-Z sería superior, a-z sería menor. Aunque no es exactamente eficiente, con la excepción de mayúscula invertida, creo que debería salir correctamente.


0
2018-01-22 15:12



Puede que esto no sea lo que estás buscando, pero pensé que deberías saber la forma real de hacerlo. Puedes usar el java.lang.Character clase isUpperCase() para encontrar información sobre el caso del personaje. Puedes usar isDigit() para diferenciar entre los números y las letras (Esto es solo FYI :)). Entonces puedes hacer un toUpperCase() y luego haz el cambio para las vocales. Esto mejorará la calidad de tu código.


0
2018-01-22 15:36



Esta es tu tarea, así que supongo que NECESITAS usar los bucles y cambiar las declaraciones. Eso es O.K, pero ¿por qué todos tus bucles son internos a los más prudentes?

¡Simplemente llévelos al mismo "nivel" y su código está bien! (parte de la mezcla baja / alta).

Un consejo: ¡Presionar extra 'Enter' y 'Space' es gratis! (Eso es lo primero que le hice a tu código, y el problema se volvió muy trivial)


0
2018-01-22 15:52