2016-03-16 2 views
1

Напишите программу, которая многократно считывает целое число от 0 до 100, которое представляет собой число центов. Преобразуйте это число центов в эквивалентное количество кварталов, копейки, никель и пенни. Программа должна вывести максимальное количество кварталов, которые будут соответствовать, а затем максимальное количество копейки, которое поместит в то, что осталось, и так далее. Затем программа запросит следующую сумму . Если сумма отрицательная, программа должна выйти.Изменить программу калькулятора java (looping)

Это то, что у меня есть до сих пор, я не уверен, как сделать его циклом или подсчитать количество или каждую монету.

System.out.println("Enter number of cents (Negative value to quit):"); 
int cents; 
cents = scan.nextInt(); 

while (cents > 0) 
{ 
    if (cents >= 25) 
    { 
     System.out.println("Quarter"); 
     cents -= 25; 
    } 
    else if (cents >= 10) 
    { 
     System.out.println("Dime"); 
     cents -= 10; 
    } 
    else if (cents >= 5) 
    { 
     System.out.println("Nickle"); 
     cents -= 5 ; 
    } 
    else if (cents >= 1) 
    { 
     System.out.println("Penny"); 
     cents -= 1; 
    } 
} 
+0

Вы также можете использовать '%' (modulo) для расчета. Таким образом, вы можете решить задачу без каких-либо циклов. – slartidan

ответ

0

Вы можете разложить проблему в 2-х частей:

  • do спросить сумму while сумма неотрицательное
  • Разложить данную сумму с целочисленным делением

1) Запросить вход по основному методу

2) Написать разложение в другой метод:

public static void decompose(int cents) { 
    if(cents >= 25) { 
    int quot = cents/25; 
    System.out.println(quot + " Quarter"); 
    cents -= quot * 25; 
    } 

    if(cents >= 10) { 
    int quot = cents/10; 
    System.out.println(quot + " Dime"); 
    cents -= quot * 10; 
    } 

    [...] 
} 
0

Ну мое предложение использовать HashMap. Где ваш код может выглядеть примерно так:

System.out.println("Enter number of cents (Negative value to quit):"); 
Map<String, Long> countMap = HashMap<String, Long>(); 
countMap.put("Quarter", 0); 
countMap.put("Dime", 0); 
countMap.put("Nickle", 0); 
countMap.put("Penny", 0); 

    int cents; 
    cents = scan.nextInt(); 

    while (cents > 0) 
    { 
     if (cents >= 25) 
     { 
      System.out.println("Quarter"); 
      countMap.put("Quarter", countMap.get("Quarter")+1L); 
      cents -= 25; 
     } 
     else if (cents >= 10) 
     { 
      System.out.println("Dime"); 
      countMap.put("Dime", countMap.get("Dime")+1L); 
      cents -= 10; 
     } 
     else if (cents >= 5) 
     { 
      System.out.println("Nickle"); 
      countMap.put("Nickle", countMap.get("Nickle")+1L); 
      cents -= 5 ; 
     } 
     else if (cents >= 1) 
     { 
      System.out.println("Penny"); 
      countMap.put("Penny", countMap.get("Penny")+1L); 
      cents -= 1; 
     } 
} 

Теперь у вас есть все, что вам нужно.

System.out.println("Quarter: " + countMap.get("Penny")); 
System.out.println("Dime: " + countMap.get("Dime")); 
System.out.println("Nickle: " + countMap.get("Nickle")); 
System.out.println("Penny: " + countMap.get("Penny")); 
+1

Почему бы просто не использовать 4 'int' переменные? Путь проще, чем хэш-карта. –

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