输出数量错误

Wrong amount outputting

import java.util.Scanner;


public class AddCoins {

    /**
     * Nick Jones
     * 2/5/2015
     * Ad Coins
     */
        public static String getDollarAmount(double pen, double nic, double dim, double qua) {
        double total;
        String amount;

        pen = pen%1;
        nic = nic%5;
        dim = dim%10;
        qua = qua%25;

        total = pen + nic + dim + qua;
        amount = ("$" + total);

        return amount;
        }

        public static void main(String[] args) {
        double pen;
        double nic;
        double dim;
        double qua;
        String amount;
        Scanner input = new Scanner (System.in);

        System.out.println ("enter amount of pennies:  ");
        pen = input.nextInt();
        System.out.println ("enter amount of nickles:  ");
        nic = input.nextInt();
        System.out.println ("enter amount of dimes:  ");
        dim = input.nextInt();
        System.out.println ("enter amount of quarters:  ");
        qua = input.nextInt();

        amount = getDollarAmount(pen, nic, dim, qua);

        System.out.println(amount);
    }

}

这个程序假设在主语句中获取所有输入的变化量,然后将其传输到 getDollerAmount();所以所有的变化都被转换成它们的值,然后合计并设置为字符串数量,这样我就可以 return 返回主程序并输出它。但数学不正确,不会给我输出。

例如

输入硬币数量:
1个 输入镍币数量:
1个 输入硬币数量:
1个 输入季度数:
1个 $3.0

这应该是 0.41 美元,但不是

所以在您的 getDollarAmount 方法中,您有以下几行:

pen = pen%1;
nic = nic%5;
dim = dim%10;
qua = qua%25;

% 符号称为 Modulus,实际上并不是您要找的东西。它实际上是取每个变量除以 1、5、10、25 后的余数。

因此,当您为每个硬币数量输入 1 时,它正在做:

1%1=0 // because 1 divided by 1 has no remainder
1%5=1
1%10=1
1%25=1

total = 0+1+1+1 =3

您想要的是实际获得每个硬币的正确价值。这是通过将硬币数量乘以它的价值来完成的,即 totalCoinValue = coinAmount * coinValue

方法应该如下所示:

public static String getDollarAmount(double pen, double nic, double dim, double qua) {
    double total;
    String amount;

    pen = pen * 0.01;
    nic = nic * 0.05;
    dim = dim * 0.10;
    qua = qua * 0.25;

    total = pen + nic + dim + qua;
    amount = ("$" + total);

    return amount;
}