Edhesive AP计算机科学U1 Ex 2

时间:2016-09-23 14:36:29

标签: java

我应该写一个程序,返回季度,镍币,硬币和硬币的变化。

但是,我只能得到改变和季度。

其他任何改变都不起作用。

import java.math.*;
import java.text.*;
import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double amountPaid, cost, changeOwed;
double pennies, nickels, dimes, quarters, change; 

System.out.println("Please Enter the Amount Paid");
amountPaid = scanner.nextDouble();

System.out.println("Please Enter the Total Cost of the Item:");
cost = scanner.nextDouble();

double roundOffPaid = amountPaid * 100;
double roundOffCost = cost *100;
double change2 = roundOffPaid - roundOffCost;
change = change2/100;
System.out.println(change);


quarters = Math.floor(change / 0.25);
dimes = Math.floor(change % .25) / .10;
nickels = Math.floor(change % .10) / .5;
pennies = Math.floor(change % .5) / .1;
System.out.println("Quarters: " +quarters);
System.out.println("Dimes: "+ dimes);
System.out.println("Nickels" + nickels);
System.out.println("Pennies "+ pennies);
  }
 }

2 个答案:

答案 0 :(得分:4)

阐述@ PEF的评论......

您的问题很可能是由于浮点舍入错误的影响。有关详细说明,请阅读

解决方案(在这种情况下)很简单。通过乘以100将提供的valuse从美元转换为美分,并使用int变量来表示(整数)美分的数量。

答案 1 :(得分:0)

您的代码中没有任何错误。当您通过将“更改”除以0.25,0.1和0.5得到余数时,您将始终得到0作为结果。