Если вы отладите это, вы увидите, что, например, 51.43
ваша последняя строка:
total_penny = (int) (user_input / 0.01);
приводит к чему-то вроде:
Поскольку вы преобразуетесь в int , это приведет к "неожиданному выводу", в данном случае ноль (0) - см. Ссылку, приведенную выше во втором комментарииотносительно точности.Тем не менее, возможное решение проблемы (в качестве учебного упражнения) заключается в следующем:
BigDecimal total_penny;
int total_nickel, total_dime, total_quarter, total_half_dollar, total_dollar_coin;
А затем в вашей строке total_penny
:
user_input = user_input % 0.05; --> you have 0.01 typo here
total_penny = BigDecimal.valueOf(user_input / 0.01);
Отформатируйте total_penny
вывод и вывод:
String penny = NumberFormat.getInstance().format(total_penny);
System.out.println("..." + penny + " penny (or pennies) ");
Это даст вам ожидаемую сумму: