1
Aprender a programar desde cero / Java no funciona la comparación en un if igual = error dice true cuando es false
« en: 09 de Noviembre 2015, 18:56 »
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?
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;
}
}