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 leerimport 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 menupublic 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
