Джава. считая правильное изменение - PullRequest
0 голосов
/ 10 января 2019

Я написал код, который должен был подсчитать изменение (количество долларов, монеты, десять центов, копейки ....). работают только «копейки», но не так, как должно быть, все остальные строки кода никогда не отвечают.

    public BigDecimal deposit() {
    String money = io.readString("Please, deposit money");
    BigDecimal deposit = new BigDecimal(money);
    return deposit;
}

public void change(String itemId) throws VendingMachinePersistenceException {
    Change change = new Change();
    Item item = dao.getItem(itemId);\\this line works
    BigDecimal change1 = deposit().subtract(item.getPrice());\\this line works
    int changeBack = change1.intValue();

    io.print("Your change is : ");
        change = change.remainder(new BigDecimal("100"));
    if (changeBack/100 != 0) {
        change.setDollars(changeBack/100);
        changeBack = changeBack%100;
        io.print(change.getDollars() + " dollars, ");
    }

    if (changeBack/25 != 0) {
        change.setQuarters(changeBack/25);
        changeBack = changeBack%25;

        io.print(change.getQuarters() + " quarters, ");
    }
    if (changeBack/10 != 0) {
        change.setDimes(changeBack/10);
        changeBack = changeBack%10;
        io.print(change.getDimes()+ " dimes, ");
    }
    if (changeBack/5!= 0) {
        change.setNickels(changeBack/5);
        changeBack = changeBack%5;
        io.print(change.getNickels() + " nickels, ");
    }

    change.setPennies(changeBack);
    io.print(change.getPennies()+ " pennies.");
}

Это может быть проблема с операторами if или преобразованием BigDecimal в Int. Я не уверен. Пожалуйста, помогите!

1 Ответ

0 голосов
/ 10 января 2019

, поскольку вы используете BigDecimal для денег, change1, вероятно, содержит значение, как 5.21

преобразование этого значения в int даст вам всего 5 для changeBack, что приведет к получению никеля за изменение.

так что вы, вероятно, захотите умножить BigDecimal на 100, прежде чем преобразовать его в int.

...