Требуется помощь с вычислениями в коде Java - PullRequest
0 голосов
/ 28 октября 2019

У меня проблема со строками кода в моей программе, которая выполняет вычисления. Я не уверен, как взять оставшуюся сумму изменений и рассчитать разницу, чтобы наименьшее количество каждой монеты отображалось и равнялось общей сумме, подлежащей выплате.

import java.util.Scanner;

public class Project_2

{
   public static void main(String[] args)

   {


      Scanner keyboard = new Scanner(System.in);

      System.out.println("Name");
      System.out.println("Project 2 Problem 2");
      System.out.println("This program computes the number of dollar bills,"); 
      System.out.println("quarters, dimes, and pennies returned for change.");


      //Variables


      double Total_cost   = 0;
      double Total_Paid   = 0;
      double Total_Change = 0;
      double Total_Penny  = 0;

      int Whole_Dollar    = 0;
      int Frac_Dollar     = 0;

      int Whole_Quarter   = 0;
      int Frac_Quarter    = 0;

      int Whole_Dime      = 0;
      int Frac_Dime       = 0;

      int Whole_Nickel    = 0;
      int Frac_Nickel     = 0;

      int Whole_Penny     = 0;

      char flag = 'Y';
      String input;


     /**Prompting for cost and amount paid. Prompt to continue. "Y" will run the program again.
        Calculations for change.
     */

      do
      {
      System.out.println();
      System.out.println();
      System.out.println("Enter cost of item(s):");

      Total_cost = keyboard.nextDouble();

      System.out.println();
      System.out.println();
      System.out.println("Enter amount paid:");

      Total_Paid = keyboard.nextDouble();

      System.out.println();
      System.out.println();

      keyboard.nextLine();


       Total_Change   = (Total_Paid - Total_cost);
       Total_Penny    = (Total_Change * 100);
       Whole_Dollar   = (int)(Total_Penny / 100);
       Frac_Dollar    = (int)Math.rint(Total_Penny % 100);

       Total_Penny     = Frac_Dollar;
       Whole_Quarter   = (int)(Total_Penny / 25);
       Frac_Quarter    = (int)Math.rint(Total_Penny % 25);

       Whole_Dime      = (int)(Total_Penny / 10);
       Frac_Dime       = (int)Math.rint(Total_Penny % 10);

       Whole_Nickel    = (int)(Total_Penny / 5);
       Frac_Nickel     = (int)Math.rint(Total_Penny % 5);



       System.out.println("Your change is: " + "$" + Total_Change);
       System.out.println("Dollar: "   +   Whole_Dollar );
       System.out.println("Quarters: " +   Whole_Quarter);
       System.out.println("Dimes: "    +   Whole_Dime   );
       System.out.println("Nickels: "  +   Whole_Nickel );
       System.out.println("Pennies: "  +   Total_Penny  );

       System.out.println("Continue? Y/N:");
       input= keyboard.nextLine();
       flag  = input.charAt(0);


      } while ((flag == 'Y' || flag == 'y'));

       {
        System.exit(0);

       }
       }
}

Проблема, с которой я столкнулсяявляется то, что отображается неправильное количество изменений. Ожидаемый результат должен быть:

Change Due: $1.41
Dollar        1
Quarters      1
Dimes         1
Nickels       1
Pennies       1

Результат, который я получаю:

Change Due: $1.41
Dollar        1
Quarters      1
Dimes         4
Nickels       8
Pennies       42
...