假设有5种硬币可供选择:美元(100美分),季度(25美分),硬币(10美分),镍币(5美分)和便士(1美分),写一个读取金额的Java程序美分和打印最小可能数量的硬币等于金额。例如,如果读取289,您的程序将打印10个硬币:2美元,3个季度,1个硬币和4个硬币。使用几种不同的金额测试您的程序,包括100,99,1,141和183.您的输出应包括硬币总数以及每种面额的数量。
import java.util.Scanner;
class Hw1 {
public static void main(String [] args) {
Scanner in = new Scanner(System.in);
int amounts; //input variables
int dollars, quarters, dimes, nickels, pennies; //output variables
System.out.print("Enter an amount in cent:");
amounts = in.nextInt();
//steps for computing dollars, quarters, dimes, nickels, and
//pennies go here
System.out.println("number of coins = "+ (dollars+quarters+dimes+nickels+pennies));
}
}
我曾经尝试过这次,这是不对的。
import java.util.Scanner;
class Hw1 {
public static void main(String [] args) {
Scanner in = new Scanner(System.in);
int amounts; //input variables
int dollars, quarters, dimes, nickels, pennies; //output variables
double totalValue;
int dollarsValue= 1.00;
int quartesValue= 0.25;
int dimesValue= 0.10;
int nickelsValue= 0.05;
int penniesValue= 0.01;
System.out.print("Enter an amount in cent:");
amounts = in.nextInt();
//steps for computing dollars, quarters, dimes, nickels, and
//pennies go here
System.out.println("number of coins = "+
(dollars+quarters+dimes+nickels+pennies));
System.out.print("number of dollars");
dollars= CONSOLE.netInt();
System.out.print("number of quarters");
quarters= CONSOLE.nextInt();
System.out.print("number of dimes");
dimes= CONSOLE.nextInt();
System.out.print("number of nickels");
nickels= CONSOLE.nextInt();
System.out.print("number of pennies");
pennies= CONSOLE.nextInt();
numberCoins=dollars+quarters+dimes+nickels+pennies;
totalValue=(dollars+quarters+dimes+nickels+pennies));
//prinitng out values
System.out.println("total number of coins" +number of coins);
}
}
答案 0 :(得分:3)
以下是您可以实现此目标的基本方法:
amounts == 0
我建议您手动完成这几次以验证其有效性。
我还想指出你给出的三个测试值的重要性; 100,99和1.这些值是边缘情况,在软件测试中很常见。相关information here。
根据您的修改修改:
此处不要使用double
或float
。钱通常表示为人数的一小部分,但计算机则不然。除了int
之外,您不需要其他数字类型。
您不想要求用户输入(我假设CONSOLE.nextInt()
您想要in.nextInt()
。您希望程序计算这些值。
专注于思考如何使用if
,else if
和while
等控制语句来实现解决方案。 (你有没有了解过这些?)
答案 1 :(得分:-2)
您可能想要使用枚举,因为您需要知道哪个硬币具有哪个值
enum Coin {
DOLLAR(100),
QUARTER(25),
DIME(10),
NICKEL(5),
PENNY(1);
public final int value;
Coin(int value) {
this.value = value;
}
}
在下面的代码中添加一些内容,然后进行设置。假设您正在加入289
。
static void getMoney(int total) {
for (Coin coin : Coin.values()) {
int amount = /* Calculate here how many times the coin value goes into the (remaining) total */
System.out.println(coin + ": " + amount);
total = total - /* Calculate here what to subtract from the previous total */;
}
}
请记住:第一枚硬币为DOLLAR
,因此金额应为2
,新的总金额应为89
。由你来决定原因和方法。