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)
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.