输人一个应收金额,输入一个实收金额,显示找零的各种纸币的张数,优先考虑面额大的纸币。假如现有100元、50元、20元、10元、5元、1元的人民币面额。如果实收金额小于应收金额则报错。 用java写出这个程序的代码
时间: 2024-09-13 21:13:00 浏览: 46
以下是一个简单的Java程序示例,用于计算并显示找零的各种纸币张数,同时确保实收金额不少于应收金额:
```java
import java.util.Scanner;
public class ChangeCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入应收金额和实收金额
System.out.print("请输入应收金额:");
double amountDue = scanner.nextDouble();
System.out.print("请输入实收金额:");
double amountReceived = scanner.nextDouble();
// 检查实收金额是否小于应收金额
if (amountReceived < amountDue) {
System.out.println("错误:实收金额小于应收金额!");
} else {
// 计算找零
double change = amountReceived - amountDue;
// 定义各种面额的纸币
int[] denominations = {100, 50, 20, 10, 5, 1};
int[] notes = new int[6]; // 存储每种面额纸币的张数
// 计算每种面额的纸币张数
for (int i = 0; i < denominations.length; i++) {
notes[i] = (int)(change / denominations[i]);
change = change % denominations[i];
}
// 显示找零的纸币张数
System.out.println("找零详情:");
for (int i = 0; i < denominations.length; i++) {
if (notes[i] > 0) {
System.out.println(denominations[i] + "元纸币:" + notes[i] + "张");
}
}
}
scanner.close();
}
}
```
这段代码首先通过`Scanner`类获取用户输入的应收金额和实收金额,然后检查实收金额是否小于应收金额。如果不是,它将计算找零并按面额从大到小分配纸币张数,最后输出每种面额纸币的数量。
阅读全文