Verificar se RG é Válido, ajuda

09/04/2009

0

Olá a todos, eu li no site: [url]http://www.profcardy.com/artigos/rg.php[/url] para ver como o RG é verificado como sendo válido ou não, então tentei fazer o seguinte código: o JRg é um JFormattedTextField
// verifica se o RG  é válido em tempo de execução
        jRg.addFocusListener(new FocusAdapter() {
            String A,B,C,D,E,F,G,H,I = "";
            int a,b,c,d,j,f,g,h,i,resul;
            
            public void focusLost(FocusEvent e) {
                A = jRg.getText().substring(0);
                B = jRg.getText().substring(1);
                C = jRg.getText().substring(3);
                D = jRg.getText().substring(4);
                E = jRg.getText().substring(5);
                F = jRg.getText().substring(7);
                G = jRg.getText().substring(8);
                H = jRg.getText().substring(9);
                I = jRg.getText().substring(11);              
                
                a = Integer.parseInt(A);
                b = Integer.parseInt(B);
                c = Integer.parseInt(C);
                d = Integer.parseInt(D);
                j = Integer.parseInt(E);
                f = Integer.parseInt(F);
                g = Integer.parseInt(G);
                h = Integer.parseInt(H);
                i = Integer.parseInt(I);
                
                resul = (((2*a)+(3*b)+(4*c)+(5*d)+(6*j)+(7*f)+(8*g)+(9*h)+(10*i))/11)%10;               
                                
                if(resul!=0) {
                    JOptionPane.showMessageDialog(null,"R.G. Inválido", "Informação ", JOptionPane.INFORMATION_MESSAGE);
                    jRg.setText("");
                    jRg.requestFocus();
                }
            }
        });
Mas na hora que eu executo dá o seguinte erro: Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "33.333.333-3" Alguém poderia me ajudar? Muito Obrigado
Fabio Volpe

Fabio Volpe

Responder

Posts

09/04/2009

Giovane Kuhn

Validar RG ??? hmmm isso me parece beeem estranho, nunca vi uma rotina dessas ! mas vamos lah... seu problema esta no substring... utilize assim:
A = jRg.getText().substring(0, 1);
B = jRg.getText().substring(1, 1);
C = jRg.getText().substring(3, 1);
...
Flow
Responder

09/04/2009

Bruno Borges

num eh por nada, mas nunca vi validacao de RG, principalmente pelo basico: nao existe PADRAO de RG... :) num eh q nem CPF (q tem ateh formula pra validar os digitos finais)
Responder

09/04/2009

Bruno Borges

[quote="do proprio site"]O chamado "Registro Geral" é sempre relativo a um particular órgão emissor, cada qual com a sua regra matemática de autenticidade... Aqui temos a exposição da regra matemática que justifica a composição numérica do dígito do RG, particularmente emitido pela SSP-SP.
Existem numeros de RG que podem conter letras !!! e o pior de tudo, esses numeros podem ser repetidos entre os estados. Um Abraço, Dennis
Responder

09/04/2009

Diego

OLÁ, PESSOAL...... ESSE CODIGO NÃO ESTA FUNCIONANDO..... SE ALGUEM TIVER OUTRA SUGESTÃO ME AJUDEM.....
Responder

09/04/2009

Carlos Heuberger

Oi, sugestao:
    private static final String RG_PATTERN = "\\d\\d\\.\\d\\d\\d\\.\\d\\d\\d-\\d";
    
    public static boolean checkRG(String rg) {
        // rg = "ab.cde.fgh-i"
        // testar formato (opcional)
        if (! rg.matches(RG_PATTERN)) {
            System.err.println(rg + " formato");
            return false;
        }
        
        int a = rg.charAt(0) - '0';
        int b = rg.charAt(1) - '0';
        //  . = rg.charAt(2)
        int c = rg.charAt(3) - '0';
        int d = rg.charAt(4) - '0';
        int e = rg.charAt(5) - '0';
        //  . = rg.charAt(6)
        int f = rg.charAt(7) - '0';
        int g = rg.charAt(8) - '0';
        int h = rg.charAt(9) - '0';
        //  - = rg.charAt(10)
        int i = rg.charAt(11) - '0';
        
        int result = 2*a + 3*b + 4*c + 5*d + 6*e + 7*f + 8*g + 9*h + 100*i;
        return (result % 11) == 0;
    }
[]]]
Responder

09/04/2009

Tiago Peczenyj

VC quer validar CPF. RG dependendo do estado pode ter letra até...
Responder

09/04/2009

Carlos Eduardo

Gostaria de saber como eu faço para verificar o numero de um rg que contem letra ! alguem pode me ajudar ? ateh +
Responder

09/04/2009

Gabriel Millian

A melhor coisa a fazer é não validar o RG. Os números mais antigos nem possuem dígito verificador, nem letra nem nada.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar