Вычисление изменения из 2 входных данных пользователем

#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.
  

Не тестировал на компьютере, но это должно сработать или дать вам представление.