Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > No insertar menos de 10 digitos en un lector.scanner

Hola a todos,

Como puedo hacer para evitar que inserte menos de 10 digitos en una lectura de teclado?

Muchas gracias,
Jose Luis,

noviembre 30, 2013 | Registered Commenterjoserodriguezan

Lo he solucionado era una tonteria.

for (int pass = 0; pass < psw.length()-1;pass++){
if (pass<10){

System.out.println("La contraseñan mide menos de 10 digitos");
System.out.print("Vuelva a intentarlo");
break;
}else if (pass>10){
pass+=pass;
System.out.print(pass);
break;

noviembre 30, 2013 | Registered Commenterjoserodriguezan

Nada no me ha funcionado. No se el porque pero me habia funcionado en un momento.

noviembre 30, 2013 | Registered Commenterjoserodriguezan

if (pass.length < 10) {
System.out.println("La contraseñan mide menos de 10 digitos");
System.out.print("Vuelva a intentarlo");
break;
..........

etc etc

noviembre 30, 2013 | Unregistered CommenterUnoPorAhi

Hola,

Muchas gracias aunque no me permite dejarlo como lo has puesto, si no así
if (pass.length() < 10) {
y funciona.

noviembre 30, 2013 | Registered Commenterjoserodriguezan

Por cierto veo tambien que no funciona para int, float. Sólo me deja con String.

Pero no puedo utilizar un String dado que los valores que tengo que utlizar son enteros y más de 25 caracateres.

si pongo string pueden escribir letras.
si pongo int no me deja escribir 25 valores.

Alguna idea?

Muchas gracias,

noviembre 30, 2013 | Registered Commenterjoserodriguezan

Puedes usar un String, obtener los caracteres, y comprobarlos uno a uno, con métodos de la clase Character.

noviembre 30, 2013 | Registered Commenterchoces

Hola choces,

No estoy muy puesto en java, puedes darme algun ejemplo.

Muchas gracias,

diciembre 1, 2013 | Registered Commenterjoserodriguezan

Sigue un ejemplo ejecutable:

public class Test {

public static void main(String[] args) {

String prueba = "12345%6gh7/890";
char[] toCharArray = prueba.toCharArray();
for (char caracter : toCharArray) {
if (Character.isDigit(caracter)) {
System.out.println("es un dígito: " + caracter);
} else if (Character.isLetter(caracter)) {
System.out.println("es una letra: " + caracter);
} else {
System.out.println("es otra cosa: " + caracter);
}
}
}
}

diciembre 1, 2013 | Registered Commenterchoces

Buenas,

Puedes usar este método para verificar si la entrada de una sola vez (que compruebe si es todo números y además que sean + de 10 dígitos

private static boolean esValido(String entrada) {
return entrada.matches("\\d{10,}");
}

Por lo que ya en tu if podrías poner simplemente

if (esValido(pass)) {
blablabla

Un saludo

diciembre 1, 2013 | Unregistered CommenterUnoPorAhi

Muchas gracias a todos. Me ha funcionado.

diciembre 2, 2013 | Registered Commenterjoserodriguezan