Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   StringTokenizer para validar clave en JAVA (http://www.forosdelweb.com/f45/stringtokenizer-para-validar-clave-java-391364/)

Estef 06/05/2006 16:22

StringTokenizer para validar clave en JAVA
 
Holas, tengo un problema con la validacion de una clave. Hice una pantalla en la cual debo ingresar una clave. Es una pantalla como la de los bancos en donde se digita la cedula y se debe digitar la clave. Ya tengo la pantalla hecha pero no se como hacer la validacion de la clave. Esta tiene que se xxx-xxx-xxx, en donde los tres primeros terminos deben ser todos numeros mayores que 5, el segundo bloque de xxx debe tener numeros menores que 5 pero no negativos y el tercer bloque debe tener numeros iguales. COmo hago eso? ademas debe salir xxx-xxx-xxx es decir con el tocken "-". Entonces hay que hacer una clase clave en la que este todo eso y no se como hacer por fa ayuda

TolaWare 07/05/2006 14:36

que es loq ue tiene que hacer la clase?
validar una cadena tipo "xxx-xxx-xxx"?

Estef 07/05/2006 14:40

Si validar xxx-xxx-xxx
 
Es decir que en la clase se debe ingresar por ejemplo una clave 123-456-789. Es decir ingreso esa clave con esa separacion y cada uno de esos bloques debe validar. por ejmplo si ingreso una clave 123-689-521 me tiene que salir quie esta mal ingresada porque el primer bloque \debe tener numeros mayores que 5, el segundo bloque menores que cinco y el tercer bloq todos los numeros deben ser iguales. Por fa si me puedes ayudar te agradezco mucho,

TolaWare 07/05/2006 15:46

Me gusto el porblema que planteaste y lo resolvi mas o menos

Cualquier duda, pregunte

Código:

public class test {
        public static void main(String [] args) {
                Clave key = new Clave("666","444","111");
                if(key.validarClave())
                        System.out.println("Es correcto");
                else
                        System.out.println("Es incorrecto");
        }
}

public class Clave {
       
        String subKey1;
        String subKey2;
        String subKey3;
       
        public Clave(String subClave1, String subClave2, String subClave3){
                subKey1 = subClave1;
                subKey2 = subClave2;
                subKey3 = subClave3;
        }
       
        public boolean validarClave(){
                if (validarSubStr1() && validarSubStr2() && validarSubStr3())
                        return true;
                else
                        return false;
        }
       
        private boolean validarSubStr1() {
                boolean ret = true;
                for (int i=0;i<subKey1.length();i++)
                        if(Integer.parseInt(subKey1.substring(i,i+1))<=5)
                                ret = false;
                if(subKey1.length()== 3 && ret)
                        return true;
                else
                        return false;
        }

        private boolean validarSubStr2() {
                boolean ret = true;
                for (int i=0;i<subKey2.length();i++)
                        if(Integer.parseInt(subKey2.substring(i,i+1))>=5)
                                ret = false;
                if(subKey2.length()== 3 && ret)
                        return true;
                else
                        return false;
        }

        private boolean validarSubStr3() {
                boolean ret = true;
                for(int i=0;i<subKey3.length()-1;i++)
                        if(subKey3.toCharArray()[i]!=subKey3.toCharArray()[i+1])
                                ret = false;
                if(subKey3.length()== 3 && ret)
                        return true;
                else
                        return false;
        }
       
}


TolaWare 07/05/2006 15:48

Para usar esta clase, llamas al constructor de Clave, a la cual le tenes que pasar las 3 secuencas de caracters (las xxx).
Despues llamas al metodo validarClave() y esta te dice si es correcta o no.

Tene en cuenta que si ingresas letras en ves de nuemros, cuando valides se largara una excepcion.

Saludos

Tipdar 07/05/2006 18:24

Y por qué no usaste el StringTokenizer? Te habría hecho la vida mucho más feliz.

La versión de TolaWare funciona, aquí tienes otro algoritmo:

Código:

import java.util.StringTokenizer;
import java.util.regex.Pattern;

public class Clave {

        public static boolean validarClave(String clave) {
                if (!((Pattern.compile("[0-9]{3}-[0-9]{3}-[0-9]{3}")).matcher(clave))
                                .matches())
                        return false;

                StringTokenizer tokens = new StringTokenizer(clave, "-");

                String trio = tokens.nextToken();
                for (int i = 0; i < 3; i++)
                        if (Integer.parseInt(new Character(trio.charAt(i)).toString()) < 5)
                                return false;
                trio = tokens.nextToken();
                for (int i = 0; i < 3; i++)
                        if (Integer.parseInt(new Character(trio.charAt(i)).toString()) >= 5)
                                return false;
                trio = tokens.nextToken();
                char primervalor = trio.charAt(0);
                for (int i = 1; i < 3; i++)
                        if (trio.charAt(i) != primervalor)
                                return false;
                return true;
        }

        public static void main(String[] args) {
                System.out.println(Clave.validarClave("585-123-777"));
        }
        // esto retorna true si está bien escrita, según tus requerimientos,
        // y false si está mal escrita.
}


Estef 27/05/2006 18:46

Muchas gracias por sus ayudas. Ya lo probe y si funciono gracias gracias

kakaka123 05/06/2006 12:07

Para validar una cadena podes usar un automata finito reconocedor de ese lenguaje..

xknown 05/06/2006 18:56

Aunque el hilo es un poco antiguo, creo que sólo con una expresión regular hubiera bastado:
Código:

public boolean validarClave(String clave)
{
    return ((java.util.regex.Pattern.compile("[5-9]{3}-[0-5]{3}-([0-9])\\1\\1")).matcher(clave)).matches();
}

Saludos

GreenEyed 06/06/2006 04:02

Muy interesante el uso de la "Back Reference" para controlar la repetición.

luis3178305208 25/04/2008 10:48

Re: StringTokenizer para validar clave en JAVA
 
hola
necesito que me ayude alguien a partir una cadena por ejemplo cuando aplico cadena.readline en el caso de un fichero llega como un string y necesito guardarlo en un arreglo de subcadenas teniendo en cuenta \" como un elemento mas de la cadena partiendo en subcadenas cada vez que encuentre minimo un espacio en blanco.
ej para la sgte cadena:" hola que mas"hola que\"mas hola" que mas"
el arrglo debe quedar:
arrcad={hola, que, mas"hola que\"mas hola", que, mas}
gracias

luis3178305208 25/04/2008 10:50

Re: StringTokenizer para validar clave en JAVA
 
hay alguien que me responda?

TolaWare 25/04/2008 19:38

Re: StringTokenizer para validar clave en JAVA
 
Para que te contesten a tu duda, tenés que crear un hilo nuevo con tu consulta, no usar hilos anteriores.

Saludos


La zona horaria es GMT -6. Ahora son las 23:54.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.