问题描述
输入一个应收金额,输入一个实收金额,显示找零的各种纸币的张数,优先考虑面额大的纸币,显示各种人民币要多少张。假如现有100、50、20、10、5、1元的面额,如果实收金额小于应收金额将报错。
分析
根据题目要求,一要优先考虑面额大的纸币,二要给出人民币的张数且得是整张数。这两个问题考虑好了,问题就迎刃而解了,具体实现方法就很简单地去完善了。朋友和另一位博主的思路具体实现如下:
朋友的思路如下:
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入应收金额");
int Smoney=sc.nextInt();
System.out.println("请输入实收金额");
int Tmoney=sc.nextInt();
int result=Tmoney-Smoney;
int hundred=0,fifty=0,twenty=0,ten=0,five=0,one=0;
if(result<0)
{
System.out.println("输入错误");
}
else {
while(result!=0)
{
if(result>=100)
{
for(;result>=100;result=result-100)
{
hundred=hundred+1;
}
}
else if(result>=50)
{
for(;result>=50;result=result-50)
{
fifty=fifty+1;
}
}
else if(result>=20)
{
for(;result>=20;result=result-20)
{
twenty=twenty+1;
}
}
else if(result>=10)
{
for(;result>=10;result=result-10)
{
ten=ten+1;
}
}
else if(result>=5)
{
for(;result>=5;result=result-5)
{
five=five+1;
}
}
else if(result>=1)
{
for(;result>=1;result=result-1)
{
one=one+1;
}
}
}System.out.println("100元"+hundred+"张"+" "+"50元"+fifty+"张"+" "+"20元"+twenty+"张"+" "+"10元"+ten+"张"+" "+"5元"+five+"张"+" "+"1元"+one+"张");
}
sc.close();
}
}
另一位博主的思路如下:
import java.util.Scanner;
public class Give_change {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
System.out.print("请输入应收金额:");
int a=input.nextInt();
System.out.print("请输入实收金额:");
int b=input.nextInt();
if(a>b)System.out.println("实收金额小于应收金额,无法找零!");
else if(a==b)System.out.println("实收等于应收,不用找零!");
else{
int m=b-a;
int c=0,d=0,e=0,f=0,g=0,h=0; //记录不同票种张数
if(m/100>=1)
{
c=m/100;
m=m%100;
}
if(m/50>=1)
{
d=m/50;
m=m%50;
}
if(m/20>=1)
{
e=m/20;
m=m%20;
}
if(m/10>=1)
{
f=m/10;
m=m%10;
}
if(m/5>=1)
{
g=m/5;
m=m%5;
}
if(m/1>=1)
{
h=m/1;
}
System.out.println("找零明细:"+"100元"+c+"张 50元"+d+"张 20元"+e+"张 10元"+f+"张 5元"+g+"张 1元"+h+"张");
}
input.close();
}
}