输出数量错误
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;
}
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;
}