2016-10-20 4 views
0

Я пытаюсь вывести минимальное количество нот, необходимых от двух входов. один из которых является стоимостью, а другой - суммой, переданной клиентом.Вычисление изменения с 2 входов пользователем

поэтому, если я вхожу 400, а затем 500, он должен сказать 2 доллара за 50 долларов. или, если я вхожу 60, а затем 80, он должен сказать 1 доллар США за ноту.

это маленький кусочек моего кода:

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"); 

    } 

ответ

0

Вы можете достичь его с помощью мод оператора %

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"); 

    } 
} 
+0

спасибо, но как я могу заставить это сделать только один или другой? поэтому, если изменение составляет 100 долларов США, изменение должно быть всего лишь 2 $ 50 нот –

0

После того, как рассчитать количество изменений в стоимости векселя, вам необходимо снизить требуемое количество изменений. Это делается в коде 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"); 

} 
+0

спасибо, но как я могу заставить его сделать только один или другой? поэтому, если изменение составляет $ 100, изменение должно быть всего 2 $ 50 нот –

0

После того, как вы получите ваши изменения, которое является переменной 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 && amount >0){ 
     numOf1 = amount; 
    } 
// output is trivial, omitted. 

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