| ||||
que es loq ue tiene que hacer la clase? validar una cadena tipo "xxx-xxx-xxx"?
__________________ http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux |
| ||||
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, |
| ||||
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; } }
__________________ http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux |
| ||||
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
__________________ http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux |
| ||||
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. }
__________________ El último TipdaR Última edición por Tipdar; 07/05/2006 a las 19:39 |
| ||||
Aunque el hilo es un poco antiguo, creo que sólo con una expresión regular hubiera bastado:
Código:
Saludos public boolean validarClave(String clave) { return ((java.util.regex.Pattern.compile("[5-9]{3}-[0-5]{3}-([0-9])\\1\\1")).matcher(clave)).matches(); } |
| |||
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 |