Autor Tema: Java no funciona la comparación en un if igual = error dice true cuando es false  (Leído 2510 veces)

Francisco

  • Sin experiencia
  • *
  • Mensajes: 12
    • Ver Perfil
Modifica tu clase TicketMachine de manera que seamos capaces de indicar al crear máquinas si estas pueden o no vender tickets con descuento. En caso de que una máquina sea creada sin la posibilidad de vender tickets con descuento debe informar de ello cuando se invoque al método printTicketWithDiscount y no hacer nada más.
En caso de hacer descuento debe señalarlo en el precio final del billete.

NOTA: la solución la he dado en el constructor y en el método que le sigue.

--¿Por qué si digo en el constructor(cuando creo el objeto).  boolean valorDescuento falso. cuando invoco el método printTicketWithDiscount aparece con descuento?

Código: [Seleccionar]

public class TicketMachine
{
    // The price of a ticket from this machine.
    private int price;
    // The amount of money entered by a customer so far.
    private int balance;
    // The total amount of money collected by this machine.
    private int total;
     
    private boolean conDescuento;

   
     
     /**
     * Construtor con la posibilidad de hacer descuentos
     */
    public TicketMachine(int cost, boolean valorDescuento)
    {
        price = cost;
        balance = 0;
        total = 0;
        conDescuento = valorDescuento;

    }
   
    /**
     * Método para máquinas sin descuento
     */
    public void printTicketWithDiscount(){
       
        int descuento = price-(price*10/100);
       
        if(conDescuento = false){
            System.out.println("Esta máquina no realiza descuentos.");
        }
        else{System.out.println("El billete " +price+"€, con descuento ha quedado en: " +descuento+ " euros. ");}
    }
   
   

    /**
     * @Return The price of a ticket.
     */
    public int getPrice()
    {
        return price;
    }

    /**
     * Return The amount of money already inserted for the
     * next ticket.
     */
    public int getBalance()
    {
        return balance;
    }

    /**
     * Receive an amount of money from a customer.
     * Check that the amount is sensible.
     */
    public void insertMoney(int amount)
    {
        if(amount > 0) {
            balance = balance + amount;
        }
        else {
            System.out.println("Use a positive amount rather than: " +
                               amount);
        }
    }
   
   
   
    /**
     * Print a ticket if enough money has been inserted, and
     * reduce the current balance by the ticket price. Print
     * an error message if more money is required.
     */
    public void printTicket()
    {
        if(balance >= price) {
            // Simulate the printing of a ticket.
            System.out.println("##################");
            System.out.println("# The BlueJ Line");
            System.out.println("# Ticket");
            System.out.println("# " + price + " cents.");
            System.out.println("##################");
            System.out.println();

            // Update the total collected with the price.
            total = total + price;
            // Reduce the balance by the prince.
            balance = balance - price;
        }
        else {
            int amountLeftToPay;
             amountLeftToPay = price -balance;
             System.out.println("Error, la cantidad no es correcta. Faltan: " +amountLeftToPay+ " euros. ");
            //System.out.println("You must insert at least: " +
                               //(price - balance) + " more cents.");
                   
        }
    }

    /**
     * Return the money in the balance.
     * The balance is cleared.
     */
    public int refundBalance()
    {
        int amountToRefund;
        amountToRefund = balance;
        balance = 0;
        return amountToRefund;
    }
   
        public int emptyMachine()
    {
        int recaudacion = -1;
        if (balance == 0) {
        recaudacion = total;
        total = 0;
        }
        return recaudacion;
    }   
}
« Última modificación: 12 de Noviembre 2015, 10:03 por Alex Rodríguez »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:UN EJERCICIO DEL INSTITUTO. (meTraeDeCabeza)
« Respuesta #1 en: 11 de Noviembre 2015, 08:46 »
Buenos días Francisco para poner título a los temas recomendamos seguir las indicaciones que se dan en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Al poner un título no descriptivo es más difícil que alguien te responda porque no se sabe sobre qué es la consulta.

Tienes el error en esta línea if(conDescuento = false)

Las comparaciones se hacen con ==, debes escribir if(conDescuento == false)

Puedes ver los detalles de por qué en este curso: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".