2014-11-27 4 views
0

Привет Я изучаю Java и создаю код, который преобразует количество введенных пенни для изменения.Как подсчитать количество монет?

Так что, если я вхожу 439p, он печатает: 439p 2 * 200p 4 * 100p 1 * 20p 1 * 10p 1 * 5p 4 * 1p. Последнее, что мне нужно реализовать, это то, сколько монет в них содержится в заявлении на печать

Так что в этом случае он должен печатать как: 439p 13 монет 2 * 200p 4 * 100p 1 * 20p 1 * 10p 1 * 5p 4 * 1p. Я знаю, что это, вероятно, простой, но я действительно не знаю, как сделать это так, любое руководство будет оценено :)

Мой код

class Main { 
public static void main(String args[]) { 

    System.out.print("#Please enter the amount of change : "); 
    int change = BIO.getInt(); 

    while(change > 0) 
    { 
     int twopounds, pounds, fifty, twenty, ten, five, two, one; 

     twopounds = change/200; 
     int left = change % 200; 

     pounds = change/100; 
     left = change % 100; 

     fifty = left/50; 
     left = left % 50; 

     twenty = left/20; 
     left = left % 20; 

     ten = left/10; 
     left = left % 10; 

     five = left/5; 
     left = left % 5; 

     two = left/2; 
     two = left % 2; 

     one = left/1; 

     if (change == 1) 
     { 
      System.out.print("1 coin"); 
     } 

     if (change > 500) 
     { 
      System.out.print("Invalid amount " + change + "p" + "\n"); 
     } 

     if (change <= 500 && change > 1) 

      System.out.print(change + "p "); 
     { 
      if (twopounds > 0) 
      { 
       System.out.print(twopounds > 0 ? twopounds + "*200p " : ""); 
      } 

      if (pounds > 0) 
      { 
       System.out.print(pounds > 0 ? pounds + "*100p " : ""); 
      } 

      if (fifty > 0) 
      { 
       System.out.print(fifty > 0 ? fifty + "*50p " : ""); 
      } 

      if (twenty > 0) 
      { 
       System.out.print(twenty > 0 ? twenty + "*20p " : ""); 
      } 

      if (ten > 0) 
      { 
       System.out.print(ten > 0 ? ten + "*10p " : ""); 
      } 

      if (five > 0) 
      { 
       System.out.print(five > 0 ? five + "*5p " : ""); 
      } 

      if (two > 0) 
      { 
       System.out.print(two > 0 ? two + "*2p " : ""); 
      } 

      if (one > 0) 
      { 
       System.out.print(one > 0 ? one + "*1p " : ""); 
      } 
     } 
     System.out.print("#Please enter the amount of change : "); 
     change = BIO.getInt(); 
    } 

} 
+2

Добавить все монеты вместе – talex

+1

Я предполагаю, что ваш ожидаемый результат: '439p 13 монет 2 * 200p 1 * 20p 1 * 10p 1 * 5p 4 * 1p' без монет 100p. –

ответ

2

Как просто:

int nbCoins = twopounds + pounds + fifty + twenty + ten + five + two + one 
1

заявление

pounds = change/100; 
left = change % 100; 

должен быть

pounds = left/100; 
left = left % 100; 
+0

Мой плохой :) забыл изменить это при редактировании кода – Austin

+0

Технически, предоставленный ожидаемый результат будет выполнен только в том случае, если вы не исправите эту ошибку :) –

+0

Если я не исправлю это? А? : P – Austin

0

Кроме того, в дополнение к замечанию unxnut, вы могли бы сократить ваш код немного, если заменить заявления на

if (x > 0) { 
    System.out.print(x > 0 ? x + "*...p " : ""); 
} 

либо

System.out.print(x > 0 ? x + "*...p " : ""); 

или

if (x > 0) { 
    System.out.print(x + "*...p "); 
} 

Любой из этих условий будет достаточным для условного вывода части, которые составляют изменение.

Смежные вопросы