java-每位顧客付款后給出找零錢的最佳組合


  假設商店貨品價格(R) 都不大於100元(且為整數),若顧客付款(P)100元內,現有一個程序能在每位顧客付款后給出找零錢的最佳組合(找給顧客貨幣張數最少)。 假定此商店的貨幣面值只包括:50(N50)10(N10) 5(N5)1(N1) 四種。

  下面為程序的代碼:

/************************************************************   
Copyright (C), 1988-1999, Huawei Tech. Co., Ltd.   
FileName: test.cpp 
  
Author:  Light      
Version : 1.0     
Date:   2018/4/17
Description:     
假設商店貨品價格(R) 都不大於100元(且為整數),若顧客付款(P)在100元內,
現有一個程序能在每位顧客付款后給出找零錢的最佳組合(找給顧客貨幣張數最少)。
假定此商店的貨幣面值只包括:50元(N50)、10元(N10)、 5元(N5)、1元(N1) 四種
 // 模塊描述         
Version: 
 僅用於軟件測試,完成作業
// 版本信息 
  
Function List: // 主要函數及其功能     
1.
 History: 
  // 歷史修改記錄 
      
	<author>  <time>   <version >   <desc>       
     Light    18/4/17     1.0        建立函數 

***********************************************************/
package demo;

import java.util.Scanner;

public class main {

	/**
	 * 主函數
	 * @param args
	 */
	public static void main (String[] args) {
		// TODO Auto-generated method stub
		
		int pay = 0;//付款金額
		int cost = 0;//商品花費
		int change = 0;//找錢
		
		@SuppressWarnings("resource")
		Scanner scanner = new Scanner(System.in);
		System.out.println("請輸入顧客付款金額:");
		//對輸入的內容進行檢測,是否符合規則
		try
		{
			pay = scanner.nextInt();
			if (pay > 100 || pay < 0)
			{
				System.out.println("請輸入正確的金額");
				return;
			}
			
		}catch (Exception e)
		{
			System.out.println("請輸入合法數字");
			return;
		}
		
		
		System.out.println("請輸入商店貨品價格:");
		//對輸入的內容進行檢測,是否符合規則
		try
		{
			cost = scanner.nextInt();
			if (cost > 100 || cost < 0)
			{
				System.out.println("請輸入正確的金額");
				return;
			}
			else if (cost > pay)
			{
				System.out.println("您的消費金額超出支付金額");
				return;
			}
		}catch (Exception e)
		{
			System.out.println("請輸入合法數字");
			return;
		}
		
		change = pay-cost;
		
		//輸出此時的付款金額,商品價格,應找金額
		System.out.println("付款金額" + pay +"   貨品價格" + cost + "     應找總金額:" + change);
		
		//獲得結果,進行輸出
		String end = giveChange(change);
		System.out.println("此次消費應找金額  " + change + " 元,其中應找  " + end);
		
	}
	
	/**
	 * 以找錢規則找錢
	 * @param change
	 * @return String//返回最終的找錢結果
	 */
	public static String giveChange(int change)
	{
		String str="";
		int qianshu;//應該找錢的張數
		int leftmoney = change;//還剩下多少錢,初始值為change
		
		if (leftmoney / 50 != 0)
		{
			qianshu = leftmoney / 50;
			str = str + qianshu + "張50元 ";
			leftmoney = leftmoney - qianshu * 50;
		}
		if (leftmoney / 10 != 0)
		{
			qianshu = leftmoney / 10;
			str = str + qianshu + "張10元 ";
			leftmoney = leftmoney - qianshu * 10;
		}
		if (leftmoney / 5 != 0)
		{
			qianshu = leftmoney / 5;
			str = str + qianshu + "張5元 ";
			leftmoney = leftmoney - qianshu * 5;
		}
		if (leftmoney / 1 != 0)
		{
			qianshu = leftmoney / 1;
			str = str + qianshu + "張1元 ";
			leftmoney = leftmoney - qianshu * 1;
		}
		
		//檢驗是否完全找完
		System.out.println("剩余沒有找完的錢數為:"+leftmoney);
		return str;
	}
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM