Java - Me podrian explicar este codigo

 
Vista:

Me podrian explicar este codigo

Publicado por Javiera 22 (17 intervenciones) el 26/01/2011 23:11:52
Alguien me puede explicar este codigo que encontre para validar, tengo estas dudas en estas partes:

Para que sirve StringBuilder?
Que tipo de validacion hacen estas expresiones regulares:matches("[0-9]+"),matches("^[A-Za-z]+$"), en realidad no
entiendo para que sirven los signos especiales +$ y ^, me pueden explicar?

Lo ultimo que significa esta validacion dentro del if (sb.length() > 0), mi duda es el con el signo ">" , con lenght y sb :(
los return false para que sirven, ya que no veo ningu return true

gracias por su respuestas, soy nuevita aprendiendo este lenguaje
besos

public boolean getValida() {
if (persona.rut.getText().equals("") || persona.nombre.getText().equals("")) {
cliente.setErrorMessage("Por favor llenar los campos");
return false;
} else {
StringBuilder sb = new StringBuilder();
if (!persona.rut.getText().matches("[0-9]+")) {
sb.append("Solo numeros en JTextfield ");
}

if (!persona.nombre.getText().matches("^[A-Za-z]+$")) {
if (sb.length() > 0) {
sb.append("\n Solo letras en JTextfield");
} else {
sb.append("Solo letras en JTextfield");
}
}
persona.setErrorMessage(sb.toString());
return false;
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Me podrian explicar este codigo

Publicado por Tom (1831 intervenciones) el 27/01/2011 10:37:44
http://www.programacion.com/articulo/tutorjava_nivel_basico_97

http://download.oracle.com/javase/tutorial/java/data/buffers.html
http://picandocodigo.net/2010/java-stringbuilder-stringbuffer/

http://luauf.com/2008/05/03/expresiones-regulares-en-java/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Me podrian explicar este codigo

Publicado por javiera 22 (1 intervención) el 28/01/2011 15:30:37
sólo necesitaba una respuesta particular de ese codigo, no leer manuales completos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Me podrian explicar este codigo

Publicado por jediknight (13 intervenciones) el 28/01/2011 19:40:46
Si aún te sirve la explicación, te la hago llegar:
PREGUNTAS:
Para que sirve StringBuilder?
Que tipo de validacion hacen estas expresiones regulares:matches("[0-9]+"),matches("^[A-Za-z]+$"), en realidad no
entiendo para que sirven los signos especiales +$ y ^, me pueden explicar?

RESPONDO:
Normalmente para manejar palabras o grupos de palabras, usas una variable del tipo String, pero ¿qué pasa cuando las agrupas?. Por ejemplo
String micadena = "Hola";
SI yo le quiero agregar "Mundo"
Coloco:
micadena = micadena + "Mundo";
Así obtengo "Hola Mundo"
¿Cuál es el problema? Que en la memoria no tendrías una variable con "Hola Mundo", sino que tendrías: "Hola", "Mundo" y "Hola Mundo", lo cual no es perceptible, pero te consume memoria y no es una buena práctica. StringBuilder lo que hace es, te permite concatenar las cadenas de manera que no te crea nuevas, sino que sólo las añade.
StringBuilder sb = new StringBuilder("Hola ");
sb.append("Mundo");
Ahí sí tendrías tu "Hola Mundo" nada más y si lo quieres mostrar lo conviertes a String.
sb.toString();

Las expresiones regulares, en este caso, las que muestras, validan que lo que tú ingreses o lo que vayas a escribir como texto, sean sólo letras en mayúculas o minúsculas. ^ es para contiene $ si no me equivoco es simplemente el estándar que indica que tu texto debe tener las cadenas.

PREGUNTAS:
Lo ultimo que significa esta validacion dentro del if (sb.length() > 0), mi duda es el con el signo ">" , con lenght y sb :(
los return false para que sirven, ya que no veo ningu return true

TE RESPONDO:

sb debe referirse al StringBuilder si no me equivoco, length es un atributo de StringBuilder que indica cuantos elementos tienes actualmente. Entonces la validación sería así

Si(la cantidad de elementos que tengo en mi StringBuilder > 0) entonces, hago algo
Lo que validas aquí es si tu Stringbuilder tiene elementos o tiene texto adentro.

EXPLICO EL CÓDIGO:
//Esta funcion valida algo, entonces me imagino que se guarda en una variable de tipo boolean que está iniciada en TRUE, si devuelve false quiere decir que algo está mal

Ejm: boolean validacion = true;
//PRocesar(){

validacion = getValida();

O algo así, debería ver todo tu código para decirte, pero lo importante es notar esto.

}

public boolean getValida() {
//Aquí preguntas si el texto es vacío (equals "" indica que es una cadena vacía)
if (persona.rut.getText().equals("") || persona.nombre.getText().equals("")) {
//Muestras un mensaje de error
cliente.setErrorMessage("Por favor llenar los campos");
//retornas false porque algo está mal
return false;
} else {
//EN caso contrario, creas tu stringbuilder
StringBuilder sb = new StringBuilder();
//ahora dice, si el texto que ingresas tiene letras y no números o tiene números y letras, está mal y añade un mensaje de error a tu sb
if (!persona.rut.getText().matches("[0-9]+")) {
sb.append("Solo numeros en JTextfield ");
}
//lo mismo, si el texto que ingresas ahora NO TIENE LETRAS, porque está usando el signo ! de negación, muestras otro mensaje
if (!persona.nombre.getText().matches("^[A-Za-z]+$")) {
//Ahora, como el stringbuilder añade cadenas una al final de otra, osea:
//StringBuilder mensaje = new StringBuilder("hola");
mensaje.append("mundo");
el resutado es "holamundo")
//Por eso esta validación. SI tu stringbuilder ya tiene algo almacenado, le pone \n que es un salto de linea, para que se muestre:
Sólo Números en JTEXTFIELD
Sólo letras en JTEXTFIELD
(Uno debajo de otro)
if (sb.length() > 0) {
sb.append("\n Solo letras en JTextfield");
} else {
//EN caso contrario, sólo se muestra el mensaje correspondiente y como es un único elemento no hay necesidad de hacerle salto de linea.
sb.append("Solo letras en JTextfield");
}
}
persona.setErrorMessage(sb.toString());
return false;
}
}

Espero te haya servido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Me podrian explicar este codigo

Publicado por javierita (3 intervenciones) el 30/01/2011 22:07:26
muchas gracias, podriamos seguir conversando en msn...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar