Foros del Web » Programación para mayores de 30 ;) » Java »

Programa sencillo

Estas en el tema de Programa sencillo en el foro de Java en Foros del Web. Bueno es el primer programa que he hecho en Java (llevo como mucho 2 semanas con esto). No se si estará bien preguntar por aquí. ...
  #1 (permalink)  
Antiguo 27/09/2013, 09:07
 
Fecha de Ingreso: septiembre-2013
Mensajes: 4
Antigüedad: 10 años, 6 meses
Puntos: 0
Programa sencillo

Bueno es el primer programa que he hecho en Java (llevo como mucho 2 semanas con esto). No se si estará bien preguntar por aquí. Siendo tan chorra.


El enunciado...

Escribe un programa en Java que permita calcular el precio de las entradas de un cine, teniendo en cuenta que si el número de entradas es igual o superior a 5 se aplica un descuento del 5% y si el número de entradas es mayor o igual a 10 el descuento es del 10%. El programa debe pedir el número de entradas y el precio inicial de una entrada y devolver mostrando por pantalla el precio total de todas las entradas y el precio final al que sale cada una.


Código Java:
Ver original
  1. import java.util.Scanner;
  2. public class Entradas {
  3.     public static void main (String [] args) {
  4.         Scanner teclado = new Scanner (System.in);
  5.         double precioIni, precioFin, precioTot;
  6.         int  cantE;
  7.         System.out.print ("Dame numero de entrada: ");
  8.         cantE= teclado.nextInt ();
  9.         System.out.print ("Dame el precio de las entrada: ");
  10.         precioIni=teclado.nextDouble ();
  11.  
  12.         if (cantE>=10) precioFin=precioIni-precioIni*0.1;
  13.         else  
  14.         if (cantE>=5) precioFin=precioIni-precioIni*0.05;
  15.         else
  16.         precioFin=precioIni;
  17.        
  18.         precioTot=precioFin*cantidadE;
  19.        
  20.         System.out.println ("El precio final de cada una es: "+precioFin+"El precio total es"+precioTot);
  21.      }
  22. }


Díganme si es correcto es que no puedo compilarlo y necesito saber si es correcto.
Además tengo una duda.

Cuando realizas operaciones con double y int el resultado queda en función de double... en el caso que quisiera que quedara en int...

¿Debería poner precioTot= (int)precioFin*cantidadE;?

y saben de un buen compilador??... es que tengo el BlueJ pero no me funciona.

Muchas gracias por responder.
  #2 (permalink)  
Antiguo 27/09/2013, 09:58
 
Fecha de Ingreso: agosto-2013
Mensajes: 103
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Programa sencillo

Está bien hecho, pero acostúmbrate a usar las llaves del if, por buenas prácticas y eso. Además te sobra una línea ya que nunca se usa
Pero por lo demás esta bien y funciona.
Te lo dejo aquí como debería ser:

Código Java:
Ver original
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package entradascine;
  6.  
  7. import java.util.Scanner;
  8.  
  9. /**
  10.  *
  11.  * @author Elfrod
  12.  */
  13. public class EntradasCine {
  14.  
  15.     /**
  16.      * @param args the command line arguments
  17.      */
  18.     public static void main(String[] args) {
  19.         // TODO code application logic here
  20.         Scanner teclado = new Scanner(System.in);
  21.         double precioIni, precioFin, precioTot;
  22.         int cantE;
  23.         System.out.print("Dame numero de entradas: ");
  24.         cantE = teclado.nextInt();
  25.         System.out.print("Dame el precio de la entrada: ");
  26.         precioIni = teclado.nextDouble();      
  27.         if (cantE >= 5) {
  28.             precioFin = precioIni - precioIni * 0.05;
  29.         } else {
  30.             precioFin = precioIni;
  31.         }
  32.         precioTot = precioFin * cantE;
  33.         System.out.println("El precio final de cada una es: " + precioFin + " El precio total es " + precioTot);
  34.     }
  35. }

Instalate primero el jdk (la ultima version) que te hará falta para después instalarte el netbeans. Hazlo por ese orden porque sino posiblemente no te funcione.

También tienes otro compilador que es el eclipse aunque yo no lo he usado aún
  #3 (permalink)  
Antiguo 27/09/2013, 10:03
 
Fecha de Ingreso: agosto-2013
Mensajes: 103
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Programa sencillo

ops!!! espera!!! que no lei lo del 10% jajajajaja ahora lo corrijo

Código Java:
Ver original
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package entradascine;
  6.  
  7. import java.util.Scanner;
  8.  
  9. /**
  10.  *
  11.  * @author Elfrod
  12.  */
  13. public class EntradasCine {
  14.  
  15.     /**
  16.      * @param args the command line arguments
  17.      */
  18.     public static void main(String[] args) {
  19.         // TODO code application logic here
  20.         Scanner teclado = new Scanner(System.in);
  21.         double precioIni, precioFin, precioTot;
  22.         int cantE;
  23.         System.out.print("Dame numero de entradas: ");
  24.         cantE = teclado.nextInt();
  25.         System.out.print("Dame el precio de la entrada: ");
  26.         precioIni = teclado.nextDouble();
  27.  
  28.         if (cantE >= 10) {
  29.             precioFin = precioIni - precioIni * 0.1;
  30.         } else {
  31.  
  32.             precioFin = precioIni - precioIni * 0.05;
  33.         }
  34.         precioTot = precioFin * cantE;
  35.         System.out.println("El precio final de cada una es: " + precioFin + " El precio total es " + precioTot);
  36.     }
  37. }

El porcentaje del 5% te coge de las 9 entradas para abajo. Ahora solo tienes que controlar que coja 5 a 9. Eso te lo dejo a ti :D por lo demás esta bien

Última edición por Mechabits; 27/09/2013 a las 10:15
  #4 (permalink)  
Antiguo 27/09/2013, 10:35
 
Fecha de Ingreso: septiembre-2013
Mensajes: 4
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Programa sencillo

pero es que tal como lo hiciste el descuento se aplica para todas y si son menores de 5 no debería aplicarse el descuento.

Lo de las claves es porque nos dijo el profesor que aprendiéramos a ahorrarlas cuando no se necesitasen.
  #5 (permalink)  
Antiguo 27/09/2013, 10:54
 
Fecha de Ingreso: agosto-2013
Mensajes: 103
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Programa sencillo

Cita:
Iniciado por maheca Ver Mensaje
pero es que tal como lo hiciste el descuento se aplica para todas y si son menores de 5 no debería aplicarse el descuento.

Lo de las claves es porque nos dijo el profesor que aprendiéramos a ahorrarlas cuando no se necesitasen.
no pretenderás que te haga los deberes...

te he dejado todo menos

Cita:
Iniciado por Mechabits Ver Mensaje
Ahora solo tienes que controlar que coja 5 a 9
Es muy sencillo. Solo tienes que tener en cuenta que si pones

if(cantE >= 5){
etc
}

te va a coger tambien todos los numeros por encima del 5, osea el 10, el 11, el 12, etc. Con lo que te he hecho solo tienes que tener en cuenta en ese else que te va a coger todos los numeros por debajo de 10 y que no sea 10.
Aplica una formula que te permita obtener ahora tan solo de 5 a 9 (incluido)

Cita:
Iniciado por maheca Ver Mensaje
Lo de las claves es porque nos dijo el profesor que aprendiéramos a ahorrarlas cuando no se necesitasen.
No digo que este mal, es solo que no se suele usar y además si no me equivoco las buenas practicas dicen que deben de llevar las llaves.
La prueba está en que en NetBeans me saltó un warning.

También podrías ponerselo así el if (esto es un if)

(cantE>=10) ? precioFin = precioIni - precioIni * 0.1 : precioFin = precioIni - precioIni * 0.05;

y es también en una línea, pero por buenas prácticas y para que sea más comprensible para TODO el mundo se pone siempre las llaves. Ya te digo que no está mal lo que te dice tu profesor, solo que no es lo habitual.

Última edición por Mechabits; 27/09/2013 a las 11:05
  #6 (permalink)  
Antiguo 27/09/2013, 11:05
 
Fecha de Ingreso: septiembre-2013
Mensajes: 4
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Programa sencillo

ya pero como puse primero el cantE>=10 solo pasará al siguiente if si es menor de 10... no??

Cuando sea 10 o mayor simplemente se ejecuta las ordenes del primer y no pasa al de abajo... No veo el problema. Y si lo hay no lo entiendo.
  #7 (permalink)  
Antiguo 27/09/2013, 11:10
 
Fecha de Ingreso: agosto-2013
Mensajes: 103
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Programa sencillo

Cita:
Iniciado por maheca Ver Mensaje
ya pero como puse primero el cantE>=10 solo pasará al siguiente if si es menor de 10... no??

Cuando sea 10 o mayor simplemente se ejecuta las ordenes del primer y no pasa al de abajo... No veo el problema. Y si lo hay no lo entiendo.
jajaja que va!
Es que estas dando una contraorden.

Le estas diciendo lo siguiente:

Si te digo 10 o más entonces hazme un descuento del 10%
Sino, si te digo 5 ó más entonces hazme un descuento del 5%

Vuelves loco al programa porque le estas dando una contraorden.
Cuando le dices 5 o más incluyes inmediatamente también todos los que están en 10 o más, por tanto cuando te vaya a calcular 10 entradas o más te va a mezclar los descuentos de ambos.

Como te lo dejé yo, solo tienes el verdadero problema que es coger del 5 al 9 en ese else y ya está
  #8 (permalink)  
Antiguo 27/09/2013, 11:16
 
Fecha de Ingreso: septiembre-2013
Mensajes: 4
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Programa sencillo

pues acabo de compilar online y me funciona...

pero a ver es que si es mayor no pasa al segundo if porque hay un else.... osea en cuanto sea mayor de 10 la orden de abajo no la toca para nada. ¿Cómo va a mezclar?

En serio pruébalo y verás...

Código Java:
Ver original
  1. import java.util.Scanner;
  2. public class Entradas {
  3.     public static void main (String [] args) {
  4.         Scanner teclado = new Scanner (System.in);
  5.         double precioIni, precioFin, precioTot;
  6.         int  cantE;
  7.         System.out.print ("Dame numero de entrada: ");
  8.         cantE= teclado.nextInt ();
  9.         System.out.print ("Dame el precio de las entrada: ");
  10.         precioIni=teclado.nextDouble ();
  11.  
  12.         if (cantE>=10) precioFin=precioIni-precioIni*0.1;
  13.         else  
  14.         if (cantE>=5) precioFin=precioIni-precioIni*0.05;
  15.         else
  16.         precioFin=precioIni;
  17.        
  18.         precioTot=precioFin*cantE;
  19.        
  20.         System.out.println ("El precio final de cada una es: "+precioFin+". El precio total es: "+precioTot);
  21.      }
  22. }
  #9 (permalink)  
Antiguo 29/09/2013, 11:13
Avatar de Krain  
Fecha de Ingreso: julio-2013
Ubicación: Valencia
Mensajes: 60
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Programa sencillo

Eso es porque no estas planteando bien los Ifs. Tendrias que poner un if - else if - else.
No lo he probado pero vamos que debería ir todo bien.

Código Java:
Ver original
  1. package ForosDelWeb;
  2. import java.util.Scanner;
  3.  
  4. public class Entradas
  5. {
  6.     public static void main (String [] args)
  7.     {
  8.         Scanner teclado = new Scanner (System.in);
  9.         double precioIni, precioFin, precioTot;
  10.         int  cantE;
  11.         System.out.print ("Dame numero de entrada: ");
  12.         cantE = teclado.nextInt();
  13.         System.out.print ("Dame el precio de las entrada: ");
  14.         precioIni = teclado.nextDouble();
  15.         if (cantE >= 10)
  16.         {
  17.             precioFin = precioIni - precioIni * 0.1;
  18.         }
  19.         else if (cantE >= 5 && cantE < 10)
  20.         {
  21.             precioFin = precioIni - precioIni * 0.05;
  22.         }
  23.         else
  24.         {
  25.             precioFin = precioIni;
  26.         }      
  27.         precioTot = precioFin * cantE;      
  28.         System.out.println ("El precio final de cada una es: " + precioFin + ". El precio total es: " + precioTot);
  29.     }
  30. }
__________________
01001011 01110010 01100001 01101001 01101110
  #10 (permalink)  
Antiguo 23/10/2013, 18:34
 
Fecha de Ingreso: agosto-2013
Mensajes: 103
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Programa sencillo

Al final le diste la solución de sus deberes :S
Cita:
Iniciado por Mechabits Ver Mensaje
Es muy sencillo. Solo tienes que tener en cuenta que si pones

if(cantE >= 5){
etc
}

te va a coger tambien todos los numeros por encima del 5, osea el 10, el 11, el 12, etc. Con lo que te he hecho solo tienes que tener en cuenta en ese else que te va a coger todos los numeros por debajo de 10 y que no sea 10.
Aplica una formula que te permita obtener ahora tan solo de 5 a 9 (incluido)
Exactamente lo que estaba diciendo yo, pero sin hacerselo :S

Etiquetas: programa, sencillo, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:17.