java编写程序,读取用户输入的代表总金额的double值,打印表示该金额所需的最少纸币张数和硬币个数,打印从最大金额开始。纸币的种类有十元、五元、一元,硬币的种类有五角、一角、贰分、壹分。
时间: 2024-03-25 13:38:53 浏览: 13
好的,这是一个比较典型的找零问题,以下是Java代码实现:
```
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入总金额:");
double totalMoney = scanner.nextDouble();
int[] paperMoneyValues = {10, 5, 1};
int[] coinValues = {50, 10, 2, 1};
int[] paperMoneyCounts = new int[3];
int[] coinCounts = new int[4];
int totalCents = (int) (totalMoney * 100);
for (int i = 0; i < paperMoneyValues.length; i++) {
paperMoneyCounts[i] = totalCents / (paperMoneyValues[i] * 100);
totalCents = totalCents % (paperMoneyValues[i] * 100);
}
for (int i = 0; i < coinValues.length; i++) {
coinCounts[i] = totalCents / coinValues[i];
totalCents = totalCents % coinValues[i];
}
System.out.println("最少纸币张数和硬币个数为:");
for (int i = 0; i < paperMoneyValues.length; i++) {
System.out.println(paperMoneyValues[i] + "元纸币:" + paperMoneyCounts[i] + "张");
}
for (int i = 0; i < coinValues.length; i++) {
if (i == 0) {
System.out.println("五角硬币:" + coinCounts[i] + "个");
} else if (i == 1) {
System.out.println("一角硬币:" + coinCounts[i] + "个");
} else if (i == 2) {
System.out.println("贰分硬币:" + coinCounts[i] + "个");
} else {
System.out.println("壹分硬币:" + coinCounts[i] + "个");
}
}
}
}
```
代码解释:
1. 首先,通过`Scanner`读取用户输入的总金额。
2. 定义纸币与硬币的面值和张数数组。
3. 将总金额转换为总的硬币个数(即总分数),并且计算纸币和硬币的张数和个数。
4. 输出结果。
注意事项:
1. 硬币面值需要乘以100,转换为分数进行计算。
2. 由于硬币面值数组是从大到小排列的,所以可以从大到小依次计算硬币个数,这样可以尽可能减少硬币的数量。
3. 最后输出硬币面值的时候,需要将硬币面值数组中的值与硬币名称对应输出。
希望能对您有所帮助!