[RESOLVIDO] Como receber dados do teclado e informar se é vogal, consoante, número ou caractere especial

Pessoal, estou fazendo técnologo em Sistemas para Internet primeiro semestre, explicando o início, porém eu quero mais que ficar no mesmo nível da turma. O exercício recebido era fazer um programa que recebesse um valor do teclado e definisse se era vogal ou consoante, mas o que quero fazer é mais que isso… Utilizar a tabela ASCII pra definir além do que é pedido, verificar se é maiúscula ou minúscula, ou se é caractere especial, porém não estou conseguindo desenvolver corretamente. Consegui fazer com que recebesse o valor do teclado e descobrir se era ao menos número, mas o restante estou com dificuldades. Estou utilizando inicialmente apenas a estrutura de condição " if ", mas se rolar de fazer com ou vetor e/ou matriz, quero muito aprender.


/*Escreva um algoritmo para ler uma letra qualquer
e dizer se é uma consoante ou vogal ou número.*/

package topico3;

import javax.swing.JOptionPane;

public class Ex06
{
  public static void main(String[] args)
  {
    char c = ( JOptionPane.showInputDialog ( "Entre com um valor qualquer: " ) . charAt ( 0 ) );
    int codigo;
    
    codigo = (int) c;
    
    if (
            ( codigo >= 48 ) && ( codigo <= 57 ) //Números
       )
       JOptionPane.showMessageDialog(null, "NÚMERO");
    
    if (
            (
                ( codigo >= 65 ) && ( codigo <= 90 )//Maiúscula
            )
            ||
            (
                ( codigo >= 97 ) && ( codigo <= 122 )//Minúscula
            )
        )   
    {
        if (
                ( 
                    ( codigo == 65 ) && ( codigo == 97 )
                ) 
                || //'a' e 'A'
                ( 
                    ( codigo == 69 ) && ( codigo == 101 )
                )
                || //'e' e 'E'
                (
                    ( codigo == 73 ) && ( codigo == 105 )
                )
                || //'i' e 'I'
                (
                    ( codigo == 79 ) && ( codigo == 111 )
                ) 
                || //'o' e 'O'
                (   
                    ( codigo == 85 ) && ( codigo == 117 )
                ) //'u' e 'U'
            )
            JOptionPane.showMessageDialog(null, "VOGAL");
        else
            JOptionPane.showMessageDialog(null, "CONSOANTE");
    }
    
    if  (
            (
                (codigo >= 0) && (codigo <= 32)
            )
            &&
            (codigo == 127)
        )//Teclas de Segurança
        JOptionPane.showMessageDialog(null, "TECLAS DE COMANDO");
    
    if  (
            (
                (codigo >= 33) && (codigo <= 47)
            )
            &&
            (
                (codigo >= 58) && (codigo <= 64)
            )
            &&
            (
                (codigo >= 91) && (codigo <= 96)
            )
            &&
            (
                (codigo >= 123) && (codigo <= 126)
            )
        )//Caractere Especial
        JOptionPane.showMessageDialog(null, "CARACTERE ESPECIAL");
  }
}

Referência do que desejo fazer com a tabela ASCII clique aqui.

Me dá um exemplo de um número que é maior ou igual à 0 e menor ou igual à 32 e igual à 127.

Me dá um exemplo de um número que é igual à 65 e igual à 97
Me dá um exemplo de um número que é igual à 69 e igual à 101
Me dá um exemplo de um número que é igual à 79 e igual à 111
Me dá um exemplo de um número que é igual à 85 e igual à 117

Me dá um exemplo de um número que é maior ou igual à 33 e menor ou igual igual à 47
e maior ou igual à 58 e menor ou igual igual à 64
e maior ou igual à 91 e menor ou igual igual à 96
e maior ou igual à 123 e menor ou igual igual à 126

Percebeu?
Você não está utilizando corretamente os operadores lógicos E e OU

Reescrevi seu código, veja:

import javax.swing.JOptionPane;

public class Ex06 {
    
    public static void main(String[] args) {
        
        String texto = JOptionPane.showInputDialog("Entre com um valor qualquer: ");
        
        char caractere = texto.toLowerCase().charAt(0);

        if ("0123456789".indexOf(caractere) != -1) {
            JOptionPane.showMessageDialog(null, "NÚMERO");
        }
       
        if ("aeiou".indexOf(caractere) != -1) {
            JOptionPane.showMessageDialog(null, "VOGAL");            
        }
        
        if ("bcdfghjklmnpqrstvwxyz".indexOf(caractere) != -1) {
            JOptionPane.showMessageDialog(null, "CONSOANTE");
        }

        int codigo = caractere;
        if (     (codigo >= 0 && codigo <= 32)
              || (codigo == 127)    ) {
            JOptionPane.showMessageDialog(null, "TECLAS DE COMANDO");
        }
        
        if (      (codigo >= 33  && codigo <= 47)
               || (codigo >= 58  && codigo <= 64)
               || (codigo >= 91  && codigo <= 96)
               || (codigo >= 123 && codigo <= 126)    ) {
            JOptionPane.showMessageDialog(null, "CARACTERE ESPECIAL");
        }
    }
}

Prezado @staroski,
O comando indexOf() fará a leitura da string pré-definida comparando se é o mesmo que o valor informado pelo usuário? O ‘-1’ seria pro programa fazer a leitura da posição 0 em diante?

De antemão obrigado pela força, estou motivado a aprender mais. \o/

Já leu a documentação da classe String?
O objetoString.indexOf(caractere) retorna a posição do caractere informado dentro daquela String. Se o caractere não estiver contido na String, o retorno será -1.

Prezado @staroski,
Perdão, não me atentei à explicação contida no link que eu anexei. Lerei imediatamente pra aprender. Obrigado. =]