java编程计算付款和找零
答案:2 悬赏:10 手机版
解决时间 2021-11-09 22:09
- 提问者网友:欲劫无渡
- 2021-11-09 11:41
java编程计算付款和找零
最佳答案
- 五星知识达人网友:躲不过心动
- 2021-11-09 12:35
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class Change {
public static void main(String[] args) {
System.out.println("请输入价格:");
double m = Double.parseDouble(getInputLine());
System.out.println("请付款金额:");
double c = Double.parseDouble(getInputLine());
change(m, c);
}
public static String getInputLine() {
InputStream inputStream = System.in;
List cmdBuffer = new ArrayList();
int t;
try {
while (true) {
t = inputStream.read();
if (t == '
') {
byte[] bs = new byte[cmdBuffer.size()];
for (int i = 0; i < cmdBuffer.size(); i++) {
bs[i] = cmdBuffer.get(i);
}
return new String(bs).trim();
} else {
cmdBuffer.add((byte) t);
if (cmdBuffer.size() > 1024) {
return null;
}
}
}
} catch (IOException e) {
return null;
}
}
public static double[] moneys = { 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100 };
public static void change(double m, double c) {
double z = c - m;
if (z < 0) {
System.out.println("付款不足!");
} else if (z == 0) {
System.out.println("不需要找零。");
} else {
System.out.println("找零共:" + z + "元");
System.out.println("其中:");
for (int i = moneys.length - 1; i >= 0; i--) {
double money = moneys[i];
int count = 0;
while ((z - money) >= 0) {
z -= money;
count++;
}
if (count > 0) {
System.out.println(money + "元:" + count + "张");
}
}
}
}
}
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class Change {
public static void main(String[] args) {
System.out.println("请输入价格:");
double m = Double.parseDouble(getInputLine());
System.out.println("请付款金额:");
double c = Double.parseDouble(getInputLine());
change(m, c);
}
public static String getInputLine() {
InputStream inputStream = System.in;
List
int t;
try {
while (true) {
t = inputStream.read();
if (t == '
') {
byte[] bs = new byte[cmdBuffer.size()];
for (int i = 0; i < cmdBuffer.size(); i++) {
bs[i] = cmdBuffer.get(i);
}
return new String(bs).trim();
} else {
cmdBuffer.add((byte) t);
if (cmdBuffer.size() > 1024) {
return null;
}
}
}
} catch (IOException e) {
return null;
}
}
public static double[] moneys = { 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100 };
public static void change(double m, double c) {
double z = c - m;
if (z < 0) {
System.out.println("付款不足!");
} else if (z == 0) {
System.out.println("不需要找零。");
} else {
System.out.println("找零共:" + z + "元");
System.out.println("其中:");
for (int i = moneys.length - 1; i >= 0; i--) {
double money = moneys[i];
int count = 0;
while ((z - money) >= 0) {
z -= money;
count++;
}
if (count > 0) {
System.out.println(money + "元:" + count + "张");
}
}
}
}
}
全部回答
- 1楼网友:老鼠爱大米
- 2021-11-09 13:47
好简单啊,不就从最大面值的开始遍历吗?
void fun(double m,double c)
{
double money=c-m;
int cnt = 0;
double charge[] = {100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01};
int chargenum[13];
for(int i = 0;i < 13;i++)
chargenum[i] = 0;
int i=0;
while(money>0)
{
while(charge[i] > money)
i++;
money = money-charge[i];
cnt++;
}
for(int i = 0;i < 13;i++)
{
System.out.Print(charge[i]);
System.out.Print(chargenum[i]);
}
}
Java的输出不是很记得了,你自己再设置一下,反正算法就是这样
void fun(double m,double c)
{
double money=c-m;
int cnt = 0;
double charge[] = {100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01};
int chargenum[13];
for(int i = 0;i < 13;i++)
chargenum[i] = 0;
int i=0;
while(money>0)
{
while(charge[i] > money)
i++;
money = money-charge[i];
cnt++;
}
for(int i = 0;i < 13;i++)
{
System.out.Print(charge[i]);
System.out.Print(chargenum[i]);
}
}
Java的输出不是很记得了,你自己再设置一下,反正算法就是这样
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯