Как обменять сумму денег на банкноты и монеты

Как я могу обменять определенное количество денег на банкноты и монеты? Допустим, ввод - 1234,26, и у нас есть заметки на 1000, 500, 200, 100, 50 и монеты на 20, 10, 1 и 0,5? таким образом, если входное значение больше 0,25 и меньше 0,75, оно должно быть округлено до 1х 0,5, если оно находится между 0,75 и 1,00, оно должно быть округлено до 1х 1, а если оно меньше 0,25, оно должно быть округлено до нуля? В этой конкретной программе желаемый результат будет выглядеть примерно так:

1x: 1000
1x:  200
1x:   20
1x:   10
4x:    1
1x:    0.5

если бы это было не для монеты 0,5, я думаю, что я мог бы сделать это, используя int и%, но на данный момент я почти ничего не понимаю (думаю, что я должен использовать массив, но я не уверен, как) и не имею Идея с чего начать. Также я начинающий, если вы можете иметь это в виду, когда отвечаете и объясняете! какие-либо советы / решения? заранее спасибо!

как это?:

   System.out.println((input/1000) + " thousand " + ((input/500)%2) + " fivehundred " + (input/200%2.5) + " two hundred " + (input/100%2) + " hundred " + (input/50%2) + " fifty " + (input/20%2.5) + " twenty " + (input/10%2) + " ten " + input/1%10 + " one " );

Я до сих пор не знаю, что делать с 0,5, так как я должен использовать int, вводя только потому, что если я использую double, я получаю его полностью неправильно, я также должен использовать оператор if для монеты 0.5..

1 ответ

Я считаю, что это стандартный подход к такого рода вопросам.

double input = 1234.26;

int thousands = input/1000;
input = input - 1000*thousands;  //So now it would 234,26
int fivehundreds = input/500;
input = input - 500*fivehundreds;
etc...

Правильно, но вы не можете конвертировать из double в int (то есть, тысячи - это int, но input - это double, поэтому input/1000 - это double). Итак, у вас есть несколько вариантов:

  1. Заработай тысячи, пятьсот и т. Д. Это довольно уродливо, однако, они никак не будут иметь десятичное значение
  2. Кастинг что-нибудь значит для тебя? Например, (int)int thousands = input/1000; буду работать. Вы можете прочитать о "приведении", но в основном я просто говорю Java, чтобы рассматривать это число как целое число, а не как двойное
  3. Сохраняйте ввод как int и округляйте его. Затем просто проверьте в конце, имеет ли оно десятичное значение (input % 1 > 0), и если это произойдет, вам нужно полдоллара.
Другие вопросы по тегам