2016-11-25 1 views
0

Здравствуйте, у меня возникла проблема с этим кодом. Я вроде как логика, но все еще не полная, я предполагаю, что выработаете минимальное количество монет, которые будут доставлены в изменение на сумму денег между 1p и 500p. когда я использую 500 это что-то ое, что им делать неправильно не печатать, работает только тогда, когда я вхожу 1 или выше 500 любая помощь будет признателенвыработать минимальное количество монет, которые должны быть поставлены с изменением

public class exchange{ 
    public static void main(String[] args) 
    { 
     int coin; 
     int OnePound = 0; 
     int TwoPound = 0; 
     int FiftyP = 0; 
     int TwentyP = 0; 
     int TenP = 0; 
     int FiveP = 0; 
     int TwoP = 0; 
     int OneP = 0; 

     int Compare = 0; 
     int Tcoins = 0 ; 

     System.out.print("#Introduce the amount of Coins"); 
     coin = BIO.getInt(); 

     if (coin < 1 || coin > 500) 
     { 
     System.out.print("Invalid amount "+coin+"p"); 
     } 

     if (coin == 1) 
     { 
      System.out.println("1 coin"); 
      System.exit(1); 
     } 

     while (Compare != coin) 
     { 

      if (200 <= coin && Compare < coin) 
      { 
       Compare = Compare + 200; 
       TwoPound = TwoPound + 1; 
       Tcoins = Tcoins + 1; 
      } 

      if (100 <= coin && Compare < coin) 
      { 
       Compare = Compare + 100; 
       OnePound = OnePound + 1; 
       Tcoins = Tcoins + 1; 
      } 

      if (50 <= coin && Compare < coin) 
      { 
       Compare = Compare + 50; 
       FiftyP = FiftyP + 1; 
       Tcoins = Tcoins + 1; 
      } 

      if (20 <= coin && Compare < coin) 
      { 
       Compare = Compare + 20; 
       TwentyP = TwentyP + 1; 
       Tcoins = Tcoins + 1; 
      } 

      if (10 <= coin && Compare < coin) 
      { 
       Compare = Compare + 10; 
       TenP = TenP + 1; 
       Tcoins = Tcoins + 1; 
      } 

      if (5 <= coin && Compare < coin) 
      { 
       Compare = Compare + 5; 
       FiveP = FiveP + 1; 
       Tcoins = Tcoins + 1; 
      } 

      if (2 <= coin && Compare < coin) 
      { 
       Compare = Compare + 2; 
       TwoP = TwoP + 1; 
       Tcoins = Tcoins + 1; 
      } 

      if (1 <= coin && Compare < coin) 
      { 
       Compare = Compare + 1; 
       OneP = OneP + 1; 
       Tcoins = Tcoins + 1; 
      } 

     } 

     System.out.print("Amount of coins: "+Tcoins); 

    } 
} 
+1

Разве это не было задано много раз на этом и других сайтах раньше? –

ответ

0

Вы должны проверить разницу между текущей суммой и общей суммой :

 if (200 <= coin - Compare) 
     { 
      Compare = Compare + 200; 
      TwoPound = TwoPound + 1; 
      Tcoins = Tcoins + 1; 
     } 
     else if (100 <= coin - Compare) 
     { 
      Compare = Compare + 100; 
      OnePound = OnePound + 1; 
      Tcoins = Tcoins + 1; 
     } 

ТАКЖЕ все должно быть else if, потому что вы хотите попробовать большое значение, пока не более больших значений не подходит, то попробуйте поменьше.

+0

им все еще путают, монета - это значение, которое вводит пользователь ... так что в конце концов не должно совпадать? Редактировать: nvm Я получаю это сейчас. – Pankake

+0

Но если я сделаю это так, то Монета и Сравнение никогда не совпадут: C и никогда не выйдут из цикла x.x – Pankake

+0

Итак, первый должен быть If, а другой 7 ifs должен быть другим, если? – Pankake

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