Validate field number / number maximum characters JAVA

0

I have the following validation:

-consumo: número decimal o entero (por ej: 10.5, 8, 16, 9.5, etc.) 

Why do you fail me?

I put the code:

public class Validaciones {
    public static boolean validarFecha(String fecha){
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
        //setLenient no permite modificar la fecha a una posible válida.
        sdf.setLenient(false);
        try {
            Date d= sdf.parse(fecha);
        } catch (ParseException ex) {
            Logger.getLogger(Validaciones.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
        return true;
    }

    public static boolean validarMatricula(String matricula){
        Pattern pat = Pattern.compile("^[\d]{4}[A-Z]{3}$");
        Matcher mat = pat.matcher(matricula);
        if (mat.matches()) {
            return true;
        } else {
            return false;
        }
    }

    public static boolean validarBastidor(String bastidor){
        Pattern pat = Pattern.compile("^[A-Z0-9]{15}$");
        Matcher mat = pat.matcher(bastidor);
        if (mat.matches()) {
            return true;
        } else {
            return false;
        }
    }

    public static boolean validarConsumo(double consumo){
        Pattern pat = Pattern.compile("^[0-9]+([,\.][0-9]*)?$");
        Matcher mat = pat.matcher(consumo);
        if (mat.matches()) {
            return true;
        } else {
            return false;
        }
    }
}

Index.java

        if(Validaciones.validarFecha("29-02-2020"))
            System.out.println("Fecha valida");
        else
            System.out.println("Fecha NO valida");


        if(Validaciones.validarMatricula("2593HBD"))
            System.out.println("Matricula valida");
        else
            System.out.println("Matricula NO valida");

        if(Validaciones.validarBastidor("AAA456789ABCDEF"))
            System.out.println("Bastidor valido");
        else
            System.out.println("Bastidor NO valido");

        if(Validaciones.validarConsumo(10.5))
            System.out.println("Consumo valido");
        else
            System.out.println("Consumo NO valido");
    
asked by omaza1990 02.01.2017 в 19:10
source

1 answer

2

I guess I read it from a textBox the data or from some input method. So you should pass a String to the validation since you are probably getting this way and the regular expressions evaluate strings of characters, for example:

  if(Validaciones.validarConsumo("10.A")) //Consumo no valido
  if(Validaciones.validarConsumo("10.5")) //Consumo  valido

And implement the function by passing a String to it

 public static boolean validarConsumo(String consumo){
        Pattern pat = Pattern.compile("^[0-9]+([,\.][0-9]*)?$");
        Matcher mat = pat.matcher(consumo);
        if (mat.matches()) {
            return true;
        } else {
            return false;
        }
    }
    
answered by 02.01.2017 / 23:29
source