#java
#java
Вопрос:
я пытаюсь вывести минимальное количество заметок, необходимых для двух входных данных. один — это стоимость, а другой — сумма, переданная клиентом.
итак, если я введу 400, а затем 500, должно быть указано 2 банкноты по 50 долларов. или, если я введу 60, а затем 80, должно быть указано 1 20-долларовая банкнота.
это небольшая часть моего кода:
import java.util.Scanner;
public class bank {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter amount due: ");
int amount = input.nextInt();
System.out.println("Amount tendered: ");
int tmp = input.nextInt();
int change;
if(amount >= 50)
{
change =(tmp - amount)/50;
System.out.println (change " $50 bills");
}
if(amount >= 20)
{
change =(tmp - amount)/20;
System.out.println (change " $20 bills");
}
Ответ №1:
Вы можете достичь этого с помощью оператора mod %
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter amount due: ");
int amount = input.nextInt();
System.out.println("Amount tendered: ");
int tmp = input.nextInt();
int change;
int diff = tmp - amount;
if (diff % 50 == 0) {
change = diff / 50;
System.out.println(change " $50 bills");
}
else if (diff % 20 == 0) {
change = diff / 20;
System.out.println(change " $20 bills");
}
}
Комментарии:
1. спасибо, но как бы мне заставить его выполнять только одно или другое? итак, если изменение составляет 100 долларов, изменение должно составлять всего 2 банкноты по 50 долларов
Ответ №2:
Как только вы рассчитаете сумму изменения в стоимости счета, вам нужно уменьшить требуемую сумму изменения. Это делается в коде changeRequired = changeRequired - change;
System.out.println("Amount tendered: ");
int tmp = input.nextInt();
int changeRequired = tmp - amount;
int change;
if(amount >= 50)
{
change =(changeRequired)/50;
changeRequired = changeRequired - change;
System.out.println (change " $50 bills");
}
if(amount >= 20)
{
change =(changeRequired )/20;
changeRequired = changeRequired - change;
System.out.println (change " $20 bills");
}
Комментарии:
1. спасибо, но как бы мне заставить его выполнять только одно или другое? итак, если изменение составляет 100 долларов, изменение должно составлять всего 2 банкноты по 50 долларов
Ответ №3:
Как только вы получите свое изменение, которое является переменной amount
, вы можете использовать следующий код, чтобы узнать, сколько нот в каждом из $50, $20, $10, $5, $1 в изменении есть. Количество заметок минимально.
numOf50 = 0; // number of $50 dollar bills, the rest is similar.
numOf20 = 0; // ...
numOf10 = 0; // ...
numOf5 = 0;
numOf1 = 0;
if (amount / 50 > 1){
numOf50 = (amount / 50);
amount %= 50; // update the amount with the remainder
}
else if (amount / 20 > 1){
numOf20 = (amount /20);
amount %= 20;
}
else if (amount / 10 > 1){
numOf10 = (amount / 10);
amount %= 10;
}
else if (amount / 5 > 1){
numOf5 = (amount / 5);
amount %= 5;
}
else if (amount <=5 amp;amp; amount >0){
numOf1 = amount;
}
// output is trivial, omitted.
Не тестировал на компьютере, но это должно сработать или дать вам представление.