Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Problema con bucle if dentro de un for.

Hola a todos,

Para un ejercicio me han pedido que añada un bucle para hacer tres repeciones.
Donde haga una pregunta sobre un precio.
Si el precio es superior a 100 €, que descuente el 10%
Si el precio es un numero negativo que avise que es negativo
Y si no es entero que avise que no es valido.

Sin embargo funciona con todo menos cuando no es entero, el bucle se realiza pero no pregunta.

Aqui os paso el codigo a ver si alguien me puede hechar una mano.

public class Exer3 {
//Constante de descuento del 8%
public static final float DESCUENTO = 8;
//Constante de descuento del 10% sólo en productos de 100€ o más
public static final float COMPRA_MIN = 100;
//Constante del desuento máximo en euros
public static final float DESC_MAX = 10;
//public static final int INTENTOS = 3;

public static void main(String[] args){
Scanner lector = new Scanner(System.in);

for (int i=3;i>0;i--){

System.out.print("Cual es el precio del producto en Euros : ");
boolean tipoCorrecto = lector.hasNextFloat();
//Si la entrada de datos es correcta.
if (!tipoCorrecto) {
//No se ha introducido un entero
System.out.print("El valor introducido no es un entero");
}else{
float precio = lector.nextFloat();
lector.nextLine();

if(precio>0){
if(precio>=COMPRA_MIN){
float desHecho = precio * DESCUENTO / 100;
if(desHecho > DESC_MAX){
desHecho=DESC_MAX;
}
precio=precio-desHecho;
System.out.println("Descuento realizado " + desHecho + " Euros");
}
System.out.println("El precio final por pagar es de " + precio + " Euros");
}else if (precio<0){
System.out.println("El precio es incorrecto, es negativo");
}
}
}
//Imprime la fecha actual al final.
System.out.println(new SimpleDateFormat("\ndd 'de' MMMM 'de' yyyy").format(new Date()));
System.out.println("Jose Luis Rodriguez Andradez");
}}

ESTE ES EL RESULTADO EN ECLIPSE

Cual es el precio del producto en Euros : a
El valor introducido no es un enteroCual es el precio del producto en Euros : El valor introducido no es un enteroCual es el precio del producto en Euros : El valor introducido no es un entero
27 de octubre de 2013
Jose Luis Rodriguez Andradez

CUANDO DEBERIA SER:
Cual es el precio del producto en Euros : a
El valor introducido no es un entero
Cual es el precio del producto en Euros : (Aqui para para preguntar)


Muchas gracias de antemano.

octubre 27, 2013 | Registered Commenterjoserodriguezan

Reinicializando el scanner se resuelve:

//No se ha introducido un entero
lector = new Scanner(System.in);
System.out.print("El valor introducido no es un entero");

octubre 27, 2013 | Registered Commenterchoces

Hola choces,

Perfecto funciona.

Muchisimas gracias choces.

octubre 27, 2013 | Registered Commenterjoserodriguezan