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