【JAVA每日小练】找零问题

问题描述

输入一个应收金额,输入一个实收金额,显示找零的各种纸币的张数,优先考虑面额大的纸币,显示各种人民币要多少张。假如现有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();
	}

}

点击此处查看博主博客

结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值