我之前已经发布过这个程序一次,但意识到我通过添加循环之类的东西想得太多了。我已经将其配对了一些,但仍然遇到了问题。该程序应该是一个改变机器。用户输入价格后,程序应将其四舍五入到最接近的美元,然后输出将分配多少零钱以及硬币的数量。此时的输出是完全错误的。我对编程非常陌生,我很茫然。
package changemachine;
import java.util.Scanner;
import java.text.*;
public class Main
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter Purchase Price: ");
double price = scan.nextDouble();
int newPrice = (int)(price*100);
int paid = (int)(newPrice+1);
int change = (int)(paid - newPrice);
int quarters = (int)(change/25);
int dimes = (int)((change%25)/10);
int nickels = (int)((change%25%10)/5);
int pennies = (int) (change%25%10%5);
System.out.println("Dispensing: " + quarters + " Quarters,"
+ dimes + "Dimes," + nickels + "Nickels,"
+ pennies + "Pennies.");
System.out.println("Program written by Ashley ");
}
}
最佳答案
(一旦 newPrice
是 int
,您就可以停止转换每一行。)而不是将 %
链接在一起,它会更具可读性(并且不易出错)减去您找到的值:
change -= 25*quarters;
dimes = change / 10;
change -= 10*dimes;
nickels = change / 5;
change -= 5*nickels;
pennies = change;
关于java - 更改机器数学和逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18423626/