Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Papazot3 en 05 de Noviembre 2016, 03:09

Título: Problema con validar enteros en java Pila por qué admite cualquier tipo de dato
Publicado por: Papazot3 en 05 de Noviembre 2016, 03:09
Hola, necesito ayuda, estoy haciendo una pila en java (la tengo lista), el problema que tengo es que en el la clase menu debo ingresar solo datos enteros, tengo una clase leer para eso pero tampoco me funciona.

la clase leer
Código: [Seleccionar]
import java.io.*;
public class Leer {

public static String dato(){
String sdato="";
try{
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
sdato=bf.readLine();
}
catch(IOException e){
System.err.println("Error:" + e.getMessage());
}
return sdato;
}
public static short datoShort(){
try{
return Short.parseShort(dato());

}
catch(NumberFormatException e){
return Short.MIN_VALUE;
}
}
public static int datoInt(){
try{
return Integer.parseInt(dato());
}
catch(NumberFormatException e){
return Integer.MIN_VALUE;
}
}


}

la clase del menu
Código: [Seleccionar]
public class Lista_Pila {

public static void main(String[] args) {
Lista lista=new Lista();
int op=0, opcLCP=0,dat,aux,maxelementospila;
maxelementospila=0;
do{
System.out.println("Ingrese cantidad máximas de elemnto para la Pila(mayor a 0)");
maxelementospila =Leer.datoInt();
}while(maxelementospila==0);

do{
Limpiar.cls();
System.out.println("Menu de la Pila" + "\n");
System.out.println("1) Ingresar Datos");
System.out.println("2) Mostrar Datos");
System.out.println("3) Elimina Dato");
System.out.println("4) Sumar Datos");
System.out.println("5) Ordenar Datos");
System.out.println("6) Buscar Datos");
System.out.println("7) Salir \n");
System.out.println("Ingrese su opcion: ");
op=Leer.datoInt();

MenuPila(op, lista, maxelementospila);

}while (op != 7);
}
public static void MenuPila(int op, Lista lista, int maxele){

int dat, aux;
switch (op)
{
case 1:
Limpiar.cls();
if (lista.largo()<maxele){
System.out.println("Ingrese Dato: ");
dat=Leer.datoInt();
lista.agregarAlInicio(dat);
System.out.println("Presione Enter para Continuar");
aux=Leer.datoInt();
}
else{
Limpiar.cls();
System.out.println("Maximo Alcanzado Para la Pila ["+maxele+"]");
System.out.println("Presione Enter para Continuar");
aux=Leer.datoInt();
}
break;

case 2:
Limpiar.cls();
System.out.println("El contenido de la Pila es:");
lista.mostrar();
System.out.println("Presione Enter para Continuar");
aux=Leer.datoInt();
break;

case 3:
Limpiar.cls();
lista.ultimoNodo();
System.out.println("Se elimino el ultimo Dato de la Pila");
System.out.println("Presione Enter para Continuar");
aux=Leer.datoInt();
break;

case 4:
Limpiar.cls();
System.out.println("La suma de total de la pila es:");
System.out.println(lista.sumarNodo());
System.out.println("Presione Enter para Continuar");
aux=Leer.datoInt();
break;


case 5:
Limpiar.cls();
System.out.println("Datos Ordenados:");
lista.ordenarNodo(lista.largo());
System.out.println("Presione Enter para Continuar");
aux=Leer.datoInt();
break;


case 6:
Limpiar.cls();
System.out.println("Ingrese el dato a Buscar:");
dat=Leer.datoInt();
lista.encontrar(dat);
System.out.println("Presione Enter para Continuar");
aux=Leer.datoInt();
break;



}
}



}

pero todavia se puede ingresar otro tipo de dato, nose donde estoy cometiendo el error si alguien me puede ayudar

saludos :P
Título: Re:Problema con validad enteros en java (Pila)
Publicado por: Mario R. Rancel en 09 de Noviembre 2016, 17:31
Buenas tardes Papazot3

He intentado compilar tu código, pero no me ha sido posible (el compilador indica que faltan clases, por ejemplo la clase Lista. Para recabar ayuda sería importante que aportaras el código de todas las clases que intervienen.

Para la petición de dato estás usando un String, y por tanto todo lo que introduzca el usuario se considera String y luego se parsea con el método que invocas a otro dato. Para realizar una validación más exigente tendrías que realizar la captura del dato sobre otro tipo de dato (por ejemplo Integer para valores numéricos), o realizar una validación sobre el String.

En estos cursos se explican los conceptos de Java:

http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=58&Itemid=180

Saludos cordiales