gpt4 book ai didi

java - 我需要帮助在 java 中进行更改。它没有正确找零

转载 作者:行者123 更新时间:2023-11-30 05:27:44 27 4
gpt4 key购买 nike

嗨,我正在尝试制定一种方法,可以为您提供百元、五十元、二十元、十元、五元、一个以及 25 美分、10 美分和 5 美分的零钱。用户给出输入,其应该看起来像这样:6.87 1 五 1 一 3 季度 1 毛 2 便士

到目前为止,我的代码是这样的:

 import java.util.Scanner;

/**
*
* @author Cjespinomartine
*/
public class Assignment04 {
public static void main(String[]args) {
Scanner stdin = new Scanner(System.in);
System.out.println("Enter your amount");
double amount = stdin.nextDouble();
double remainder = Math.round(amount * 100);

double hundreds = remainder / 1000;
remainder = remainder / 1000;

double fifties = remainder / 500;
remainder = remainder / 500;

double twenties = remainder / 200;
remainder = remainder % 200;
/*
double fives = remainder / 5;
remainder = remainder % 5;

double ones = remainder / 1;
remainder = remainder % 1;

double quarters = remainder / .25;
remainder = remainder % .25;

double dimes = remainder / .10;
remainder = remainder %10;

double nickels = remainder / .5;
remainder = remainder % .5;

double pennies = remainder;
*/

System.out.println(hundreds + "hundred/s");
System.out.println(fifties + "fiftie/s");
System.out.println(twenties + "twentie/s");
/* System.out.println(fives + "five/s");
System.out.println(ones + "one/s");
System.out.println(quarters + "quarter/s");
System.out.println(dimes + "dime/s");
System.out.println(nickels + "nickel/s");
System.out.println(pennies + "cent/s");
*/
}
}

它不会给零钱,而是只给数百个。我评论了一些变化,因为我试图得到正确的数学结果。我认为作业是必需的,如果是的话,如果是的话,你能帮我解决我把它放在哪里的问题吗?任何帮助都意味着很多,我很困难,谢谢。

最佳答案

有一些问题。

第一个问题是您对余数的初始处理 - 您乘以 100,因此如果输入为 1274.56,最终会得到 127456 code> (忽略有效的浮点问题,但我将继续关注第一点)。 Math.round() 的输出是 intlong,但绝对不是 double 所以你通过将其存储为 double 来给自己增加困惑 - 相反,将结果存储为 long。从这里开始,当您计算时,您需要除以 10,000 而不是 1,000。另外,将其存储为 int,而不是 double。看起来像这样:

long remainder = Math.round(1274.56 * 100);
int hundreds = (int) remainder / 10000;
System.out.println("hundreds: " + hundreds);

上面打印出“12”代表数百,这正是您想要的。

第二个问题是如何计算余数。您需要使用 %(模运算符)进行的先前计算中“剩下”的所有内容,并且还使用 10,000 而不是 1,000。对于数百的情况,将是这样的:

remainder = remainder % 10000;
System.out.println("remainder: " + remainder);

上面的代码将打印:

remainder: 7456

这应该足以让您的其余数学运算正常进行。

关于java - 我需要帮助在 java 中进行更改。它没有正确找零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58210131/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com