编写java代码,读取用户输入的代表总金额的double值,打印表示该金额所需的最少纸币张数和硬币个数,打印从最大金额开始。纸币的种类有十元、五元、一元,硬币的种类有五角、一角、贰分、壹分。
时间: 2023-03-10 07:58:17 浏览: 104
下面是可以实现上述功能的Java代码:public static void getChange(double total) {
int[] money = {10, 5, 1, 0.5, 0.1, 0.05, 0.01}; //纸币和硬币类型
int[] count = new int[money.length]; //记录纸币和硬币的数量 for (int i = 0; i < money.length; i++) {
count[i] = (int) (total / money[i]);
total = total - count[i] * money[i];
} //打印从最大金额开始的纸币和硬币的个数
for (int i = money.length - 1; i >= 0; i--) {
if (count[i] > 0) {
System.out.println("金额为" + money[i] + "的纸币或硬币有" + count[i] + "张");
}
}
}
相关问题
java编写程序,读取用户输入的代表总金额的double值,打印表示该金额所需的最少纸币张数和硬币个数,打印从最大金额开始。纸币的种类有十元、五元、一元,硬币的种类有五角、一角、贰分、壹分。
好的,这是一个比较典型的找零问题,以下是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. 最后输出硬币面值的时候,需要将硬币面值数组中的值与硬币名称对应输出。
希望能对您有所帮助!
编写程序,读取用户输入的代表总金额的double值,打印表示该金额所需的最少纸币张数和硬币个数,打印从最大金额开始。纸币的种类有十元、五元、一元,硬币的种类有五角、一角、贰分、壹分。用java编写
您好,我可以回答这个问题。以下是Java代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入总金额:");
double totalAmount = scanner.nextDouble();
int[] bills = {10, 5, 1};
int[] coins = {50, 10, 2, 1};
String[] billNames = {"十元", "五元", "一元"};
String[] coinNames = {"五角", "一角", "贰分", "壹分"};
System.out.println("需要的纸币和硬币如下:");
for (int i = ; i < bills.length; i++) {
int count = (int) (totalAmount / bills[i]);
if (count > ) {
System.out.println(billNames[i] + ":" + count + "张");
totalAmount -= count * bills[i];
}
}
for (int i = ; i < coins.length; i++) {
int count = (int) (totalAmount / coins[i]);
if (count > ) {
System.out.println(coinNames[i] + ":" + count + "个");
totalAmount -= count * coins[i] / 100.;
}
}
}
}
希望能帮到您。
阅读全文