Hola a todos, hoy os dejo una serie de ejercicios de Java para practicar todo aquello que hemos explicado en anteriores posts.
Todos los ejercicios que proponemos están resueltos en este mismo post, intenta hacerlo por ti mismo y si te quedas atascado puedes mirar la solución. Recuerda, que no tiene por que estar igual tu solución con la del post, el objetivo es que aprendas no que me copies la solución.
Te recomiendo que uses mensajes de trazas, donde te sean necesarios. Si tienes problemas también puedes usar el depurador.
Aquí tienes todos los posts relacionados con Java:
Curso Java
Si tienes alguna duda, recuerda que puedes consultarnos escribiendo un comentario en este post o enviándonos un e-mail a administrador@discoduroderoer.es
Son básicamente funciones que podéis reutilizar para vuestros proyectos, podéis quitar static si lo ponéis en una clase por ejemplo.
1) Validar un número entero.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un numero entero
* @param texto String que contiene el valor a validar
* @return True = es un numero entero
*/
public static boolean validaNumeroEntero_Exp(String texto){
return texto.matches("^-?[0-9]+$");
}
|
2) Validar un número entero positivo.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un numero entero positivo
* @param texto String que contiene el valor a validar
* @return True = es un numero entero positivo
*/
public static boolean validaNumeroEnteroPositivo_Exp(String texto){
return texto.matches("^[0-9]+$");
}
|
3) Validar un número entero negativo.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un numero entero negativo
* @param texto String que contiene el valor a validar
* @return True = es un numero entero negativo
*/
public static boolean validaNumeroEnteroNegativo_Exp(String texto){
return texto.matches("^-[0-9]+$");
}
|
4) Validar DNI, 8 números y una letra al final.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un DNI: 8 numeros y una letra al final
* @param DNI String que contiene el valor a validar
* @return True = es un DNI válido
*/
public static boolean validaDNI_Exp(String DNI){
return DNI.matches("^[0-9]{8}[T|R|W|A|G|M|Y|F|P|D|X|B|N|J|Z|S|Q|V|H|L|C|K|E]$");
}
|
5) Validar una IP.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es una IP válida
* @param ip String que contiene el valor a validar
* @return True = es una IP válida
*/
public static boolean validaIP_Exp(String ip){
return ip.matches("^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$");
}
|
6) Validar una matricula de un coche con formato 0000XXX
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es una matricula europea (<2000)
*
* @param matricula String que contiene el valor a validar
* @return True = es una matricula europea (<2000)
*/
public static boolean validarMatriculaEuropea_Exp(String matricula) {
return matricula.matches("^[0-9]{4}[A-Z]{3}$");
}
|
7) Validar un número binario.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un número binario
* @param binario String que contiene el valor a validar
* @return True = es un número binario válido
*/
public static boolean validaBinario_Exp(String binario){
return binario.matches("^[0-1]+$");
}
|
8) Validar un número octal.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un número octal
* @param octal String que contiene el valor a validar
* @return True = es un número octal válido
*/
public static boolean validaOctal_Exp(String octal){
return octal.matches("^[0-7]+$");
}
|
9) Validar un número hexadecimal.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un número hexadecimal
* @param hexadecimal String que contiene el valor a validar
* @return True = es un número hexadecimal válido
*/
public static boolean validaHexadecimal_Exp(String hexadecimal){
return hexadecimal.matches("^[0-9A-F]+$");
}
|
10) Validar numero real.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un numero real (positivo o negativo)
* @param texto String que contiene el valor a validar
* @return True = es un numero real
*/
public static boolean validaNumeroReal_Exp(String texto){
return texto.matches("^-?[0-9]+([\\.,][0-9]+)?$");
}
|
11) Validar numero real positivo.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un numero real positivo
* @param texto String que contiene el valor a validar
* @return True = es un numero real positivo
*/
public static boolean validaNumeroRealPositivo_Exp(String texto) {
return texto.matches("^[0-9]+([\\.,][0-9]+)?$");
}
|
12) Validar numero real negativo.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un numero real negativo
* @param texto String que contiene el valor a validar
* @return True = es un numero real negativo
*/
public static boolean validaNumeroRealNegativo_Exp(String texto){
return texto.matches("^-[0-9]+([\\.,][0-9]+)$");
}
|
13) Validar numero real con x decimales.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un numero real (positivo o negativo) con un
* numero de decimales
* @param texto String que contiene el valor a validar
* @param num_deciamales numero de decimales maximo, no puede ser menor que
* cero
* @return True = es un numero real
*/
public static boolean validaNumeroReal_Exp(String texto, int num_deciamales) {
if (num_deciamales > 0) {
return texto.matches("^-?[0-9]+([\\.,][0-9]{1," + num_deciamales + "})?$");
} else {
return false;
}
}
|
14) Validar numero real positivo con x decimales.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un numero real (positivo o negativo) con un
* numero de decimales
*
* @param texto String que contiene el valor a validar
* @param num_deciamales numero de decimales maximo, no puede ser menor que
* cero
* @return True = es un numero real
*/
public static boolean validaNumeroRealPositivo_Exp(String texto, int num_deciamales) {
if (num_deciamales > 0) {
return texto.matches("^[0-9]+([\\.,][0-9]{1," + num_deciamales + "})?$");
} else {
return false;
}
}
|
15) Validar numero real negativo con x decimales.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un numero real (positivo o negativo) con un
* numero de decimales
*
* @param texto String que contiene el valor a validar
* @param num_deciamales numero de decimales maximo, no puede ser menor que
* cero
* @return True = es un numero real
*/
public static boolean validaNumeroRealNegativo_Exp(String texto, int num_deciamales) {
if (num_deciamales > 0) {
return texto.matches("^-[0-9]+([\\.,][0-9]{1," + num_deciamales + "})?$");
} else {
return false;
}
}
|
16) Validar una fecha con formato dd/mm/aaaa
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena tiene el formato de fecha dd/mm/aaaa
*
* @param texto String que contiene el valor a validar
* @return True = es una fecha válida
*/
public static boolean validaNumeroFecha_Exp(String texto) {
return texto.matches("^(0?[1-9]|[12][0-9]|3[01])[\\/](0?[1-9]|1[012])[/\\/](19|20)\\d{2}$");
}
|
17) Validar un nombre, incluyendo nombres compuestos.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena tiene el formato de nombre de persona, incluyendo nombres compuestos
*
* @param texto String que contiene el valor a validar
* @return True = es un nombre válido
*/
public static boolean validaNombre_Exp(String texto) {
return texto.matches("^([A-Z]{1}[a-z]+[ ]?){1,2}$");
}
|
18) Validar un email.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un email
*
* @param email String que contiene el valor a validar
* @return True = es un email válido
*/
public static boolean validar_Mail_Exp(String email) {
return email.matches("^([\\w-]+\\.)*?[\\w-]+@[\\w-]+\\.([\\w-]+\\.)*?[\\w]+$");
}
|
19) Valida un nombre de usuario en twitter, empieza por @ y puede contener letras mayusculas y minusculas, numeros, guiones y guiones bajos.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un usuario de twitter
*
* @param usuario_twitter String que contiene el valor a validar
* @return True = es un usuario de twitter
*/
public static boolean validarUsuarioTwitter_Exp(String usuario_twitter) {
return usuario_twitter.matches("^@([A-Za-z0-9_]{1,15})$");
}
|
20) Validar ISBN de 13 digitos, siempre empieza en 978 o 979.
Spoiler Inside |
SelectShow> |
/**
* Valida si una cadena es un ISBN de 13 digitos
*
* @param ISBN String que contiene el valor a validar
* @return True = es un usuario de twitter
*/
public static boolean validarISBN13_Exp(String ISBN) {
return ISBN.matches("^(978|979)[0-9]{9}$");
}
|
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
muy bueno, gracias
Buen post
Muchas gracias por compartir
Yo queria preguntar una duda, espero que me respondan lo mas pronto posible. Mi duda es que estoy intentando validar un numero de telefono con las siguientes caracteristicas:
-Un número de teléfono tiene 9 dígitos.
-El primer dígito siempre es 8 o 9.
-Opcionalmente puede ir precedido por el código del país (con o signo +). El código de
país está formado por un número de entre dos y cuatro dígitos
Estoy utilizando eclipse para programar java,
public static boolean validarTelefono(String telefono) {
return telefono.matches(«^([+]{1}?[0-9]{2,3,4})?[8-9]{1}[0-9]{8}$»);
}
esta es la expresion regular que he hecho para validar el telefono pero no me funciona y no entiendo el porque, espero que puedan ayudarme
Gracias
Alvaro Alarcon Macho
import re
patron = re.compile(r'((^\+)[0-9]{2,4})?(8|9)[1-9]{8}’)
lista = [‘+12812345678’, ‘+12912345678’, ‘912345678’]
print(patron.match(lista[0]))
print(patron.match(lista [1]))
print(patron.match(lista [2]))
Hola, tengo un problema con este ejercicio y necesito ayuda gracias
El objetivo principal de esta tarea es crear una clase ISBN con un único método estático esValido(String isbn) que determine si el ISBN proporcionado es o no correcto.
Para verificar que el correcto funcionamiento del método que se va a desarrollar se creará una batería de test en JUnit atendiendo a las siguientes especificaciones:
Hasta el año 2007, todas ediciones y variaciones de un libro recibían un ISBN de 10 dígitos dividido en los cuatro grupos siguientes:
• Código de país o lengua de origen (ISBN por países)
• Código del editor (asignado por la agencia nacional del ISBN)
• Número del artículo (elegido por el editor)
• Dígito de control
Los tres primeros campos pueden tener diferentes longitudes y se separan por guiones (no se requiere trabajar con los códigos de países y editores reales, solo contemplar que el ISBN se puede separar con guiones), mientras que el dígito de control solo es uno y puede ser un dígito entre el 0 y el 9 o la letra X.
Para facilitar el trabajo de verificación de la validez del formato de ISBN se proponen las siguientes pruebas:
• En conjunto, el ISBN tendrá una longitud de 13 caracteres, siendo 3 de ellos obligatoriamente guiones, y el resto números o la letra X. Define casos de prueba válidos e inválidos.
• No pueden aparecer dos guiones seguidos en el ISBN. Define casos de prueba válidos e inválidos.
• Después del último guión solo puede haber un carácter, o lo que es lo mismo, el último guión se tiene que encontrar obligatoriamente en la posición 11 de la cadena de texto, si esta comienza en 0. Define casos de prueba válidos e inválidos.
• Cuando tenemos ya los códigos de país, editor y artículo los colocamos y multiplicamos cada uno de los números por la posición que ocupan, es decir, el primero por 1, el segundo, por dos y así sucesivamente hasta el último que se multiplicaría por 9. Después dividimos el resultado entre 11. Dicha división dejará un resto, digamos r, entre 0 y 10. Si r está entre 0 y 9 tomamos r como dígito de control. Si el resto es 10 tomamos como dígito de control la letra X.