Problemas com método de autenticação

2 respostas
Onimatsu

Boa noite a todos.
Estou a criar um método que faz a validação de uma placa de carro cujo formato pode ser digitado em "aaa-0000" ou "aaa0000" só que estou com dois problemas o primeiro e o mais grave é um NullPointerException quando vou setar a placa, o outro é um erro de verificação que me retorna a mensagem placa inválida quando digito uma String " aaa - 0000 ".

Fiz uma varíavel textoRefator que refatora " aaa - 0000 " para o formato válido "aaa-0000" que funciona mais por algum motivo não entra no if. E testei o meu veiculo.setPlaca("aaa-0000" ); // que o formato que deve salvar no objeto e mesmo assim fica com NullPointerException não sei o que fazer. Peço ajuda aos especialistas de plantão.
private void autenticaPlaca(String texto) {
        String textoRefator = texto.replaceAll(" ", "").trim();
        String[] vetAux = textoRefator.split("-");
        int contHifen = 0;

//        System.out.println("teste " + textoRefator);
//        System.out.println("teste substring somente letras " + textoRefator.substring(3));
//        System.out.println("numeros convertidos "+Integer.valueOf(textoRefator.substring(3)));
//        int x = Integer.valueOf(textoRefator.substring(3));
//        int z = x+1;
//        System.out.println("result numero "+ z);
//        System.out.println("teste booleano "+Util.isNumeroValido(Integer.valueOf(vetAux[1])));
//        System.out.println("teste refator "+textoRefator.substring(0, 3)+"-"+textoRefator.substring(3));

        if (!texto.equals("")) {
            for (int i = 0; i < textoRefator.length(); i++) {
                if (textoRefator.charAt(i) == '-') {
                    contHifen++;
                }
            }
            if (((textoRefator.contains("-") && textoRefator.length() == 8) && contHifen == 1)
                    && (Util.isStringValida(vetAux[0]) && Util.isNumeroValido(Integer.valueOf(vetAux[1])))) {
                System.out.println("registro concluído placa com - ");
                veiculo.setPlaca(textoRefator);
                jtf_placa.setText(textoRefator);

            } else if (((!textoRefator.contains("-") && textoRefator.length() == 7) && contHifen == 0)
                    && (Util.isStringValida(textoRefator.substring(0, 3)) && Util.isNumeroValido(Integer.valueOf(textoRefator.substring(3))))) {
                System.out.println("registro concluído placa sem - ");
                textoRefator = textoRefator.substring(0, 3) + "-" + textoRefator.substring(3);
                veiculo.setPlaca(textoRefator); //NULLPOINTEREXCEPTION AQUI//
                jtf_placa.setText(textoRefator);

            } else {
                JOptionPane.showMessageDialog(null, "Digite a placa no formato AAA0000 ou AAA-0000.");
                jtf_placa.setText("");
            }
        }
    }
package trabalho01;

public class Veiculo {

    String placa;

    public Veiculo() {
    }

    public String getPlaca() {
        return placa;
    }

    public void setPlaca(String placa) {
        this.placa = placa;
    }
}
package trabalho01;

public class Util {

    public static boolean isStringValida(String texto) {
        if (texto.equals("0")
                || texto.contains("0")
                || texto.contains("1")
                || texto.contains("2")
                || texto.contains("3")
                || texto.contains("4")
                || texto.contains("5")
                || texto.contains("6")
                || texto.contains("7")
                || texto.contains("8")
                || texto.contains("9")
                || texto.contains("+")
                || texto.contains("-")
                || texto.contains("*")
                || texto.contains("/")
                || texto.contains("=")
                || texto.contains("_")
                || texto.contains("@")
                || texto.contains("#")
                || texto.contains("$")
                || texto.contains("%")
                || texto.contains("¨")
                || texto.contains("¬")
                || texto.contains("&")
                || texto.contains("(")
                || texto.contains(")")
                || texto.contains("§")
                || texto.contains("[")
                || texto.contains("]")
                || texto.contains("{")
                || texto.contains("}")
                || texto.contains("ª")
                || texto.contains("º")
                || texto.contains("/")
                || texto.contains("°")
                || texto.contains("?")
                || texto.contains(";")
                || texto.contains("'")
                || texto.contains("|")) {
            return false;
        } else {
            return true;
        }
    }

    public static boolean isNumeroValido(int numero) {
        if (numero == 0
                || numero == 1
                || numero == 2
                || numero == 3
                || numero == 4
                || numero == 5
                || numero == 6
                || numero == 7
                || numero == 8
                || numero == 9) {
            return true;
        } else {
            return false;
        }
    }
}

2 Respostas

jeffev

Foi dado new no objeto veiculo?

Onimatsu

Não, eu tinha esquecido :oops: mas já arrumei e esta funcionando agora só estou com o outro problema de lógica.

Criado 23 de março de 2013
Ultima resposta 23 de mar. de 2013
Respostas 2
Participantes 2