Javaプログラミング学習サイト ゆるゆるプログラミング

・お札とコインの数

入力した金額からお札と硬貨の最少枚数を求める方法を解説します。

ここでは、日本のお札と硬貨の種類ごとに枚数を計算します。1万円札、5千円札、500円硬貨、100円硬貨、50円硬貨、10円硬貨、50円硬貨、1円硬貨を計算の対象とし、2千円札は対象外にしています。

それでは、計算方法について説明していきます、

各お札と硬貨の必要枚数は、金額から直接計算します。例えば12,800円で必要な500円硬貨は1枚というような感じです。この計算式は、

  500円硬貨の枚数 = ( 12800 % 1000 ) / 500

です。12800を1000で割った余りを求め、その数を500で割ると500百円硬貨の枚数が計算できます。この計算には整数を使うので割り算した結果は小数点以下切捨てになります。

  500円硬貨の枚数 = ( 12800 % 1000 ) / 500 = 800 / 500 = 1

このように、余り割り算を使って各お札と硬貨の枚数を計算することができます。以下は、枚数計算の式をまとめたものです。

  10000円札の枚数 = 金額 / 10000

  5000円札の枚数 = ( 金額 % 10000 ) / 5000

  1000円札の枚数 = ( ( 金額 % 10000 ) / 1000 ) % 5

  500円硬貨の枚数 = ( 金額 % 1000 ) / 500

  100円硬貨の枚数 = ( ( 金額 % 1000 ) / 100 ) % 5

  50円硬貨の枚数 = ( 金額 % 100 ) / 50

  10円硬貨の枚数 = ( ( 金額 % 100 ) / 10 ) % 5

  5円硬貨の枚数 = ( 金額 % 10 ) / 5

  1円硬貨の枚数 = ( 金額 % 10 ) % 5

次は、枚数の計算式を使ってプログラムを作成していきます。

以下がJavaソースコードです。キーボードで入力した金額のお札の枚数と硬貨の枚数をメソッドで求めています。

JapaneseMoney.java ← クリックしてダウンロードページに移動
001:    import java.io.*;
002:    
003:    class JapaneseMoney {
004:    	// 10000円札の枚数
005:    	static int getNumber_bill_10000( int yen )
006:    	{
007:    		return yen / 10000;
008:    	}
009:    
010:    	// 5000円札の枚数
011:    	static int getNumber_bill_5000( int yen )
012:    	{
013:    		return ( yen % 10000 ) / 5000;
014:    	}
015:    
016:    	// 1000円札の枚数
017:    	static int getNumber_bill_1000( int yen )
018:    	{
019:    		return ( ( yen % 10000 ) / 1000 ) % 5;
020:    	}
021:    
022:    	// 500円玉の枚数
023:    	static int getNumber_coin_500( int yen )
024:    	{
025:    		return ( yen % 1000 ) / 500;
026:    	}
027:    
028:    	// 100円玉の枚数
029:    	static int getNumber_coin_100( int yen )
030:    	{
031:    		return ( ( yen % 1000 ) / 100 ) % 5;
032:    	}
033:    
034:    	// 50円玉の枚数
035:    	static int getNumber_coin_50( int yen )
036:    	{
037:    		return ( yen % 100 ) / 50;
038:    	}
039:    
040:    	// 10円玉の枚数
041:    	static int getNumber_coin_10( int yen )
042:    	{
043:    		return ( ( yen % 100 ) / 10 ) % 5;
044:    	}
045:    
046:    	// 5円玉の枚数
047:    	static int getNumber_coin_5( int yen )
048:    	{
049:    		return ( yen % 10 ) / 5;
050:    	}
051:    
052:    	// 1円玉の枚数
053:    	static int getNumber_coin_1( int yen )
054:    	{
055:    		return ( yen % 10 ) % 5;
056:    	}
057:    
058:    
059:    	// メイン
060:    	public static void main( String[] args ) {
061:    		// 金額
062:    		int yen = 0;
063:    		
064:    		// キーボードから金額を入力
065:    		BufferedReader input = 
066:    			new BufferedReader( new InputStreamReader( System.in ) );
067:    
068:    		try {
069:    			System.out.print( "金額を入力してください(Enterキーで終了) : ");
070:        	                String buf = input.readLine();
071:    			yen = Integer.parseInt( buf );
072:    		}
073:    		catch ( Exception e ) {
074:    			// 入力エラー
075:    			System.out.println( e );
076:    			return;
077:    		}
078:    
079:    		// 0円未満の処理
080:    		if ( 0 > yen ) {
081:    			System.out.println( "0円以上を入力してください" );
082:    			return;
083:    		}
084:    
085:    
086:    		// 結果を表示
087:    		System.out.println( "10000円札: " + getNumber_bill_10000( yen ) );
088:    		System.out.println( "5000円札 : " + getNumber_bill_5000( yen ) );
089:    		System.out.println( "1000円札 : " + getNumber_bill_1000( yen ) );
090:    		System.out.println( "500円玉  : " + getNumber_coin_500( yen ) );
091:    		System.out.println( "100円玉  : " + getNumber_coin_100( yen ) );
092:    		System.out.println( "50円玉   : " + getNumber_coin_50( yen ) );
093:    		System.out.println( "10円玉   : " + getNumber_coin_10( yen ) );
094:    		System.out.println( "5円玉    : " + getNumber_coin_5( yen ) );
095:    		System.out.println( "1円玉    : " + getNumber_coin_1( yen ) );
096:    	}
097:    }

JapaneseMoneyの実行例

java JapaneseMoney
金額を入力してください(Enterキーで終了) : 1980

JapaneseMoneyの出力結果

10000円札: 0
5000円札 : 0
1000円札 : 1
500円玉  : 1
100円玉  : 4
50円玉   : 1
10円玉   : 3
5円玉    : 0
1円玉    : 0

キーボードから1980を入力すると、1000円札が1枚、500円硬貨が1枚、100円硬貨が4枚、50円硬貨が1枚、10円硬貨が3枚と出力されました。

マイナスの金額を入力すると"0円以上を入力してください"というメッセージがコンソール出力されます。

以上が、金額からお札の枚数と硬貨の枚数を求めるプログラムの説明です。

■関連コンテンツ

コンソール入力 コンソール入力について解説
キーボード入力 ScannerクラスとSystem.inを使用
メソッド メソッドについて解説
剰余(余り)を計算した結果を表示するプログラムについて解説-画像

剰余(余り)計算

剰余(余り)をを計算するプログラムの紹介と、その結果を表示する方法を解説

四則演算(足し算/引き算/掛け算/割り算)について-画像

計算結果の表示

足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)の使い方を説明

■新着情報

2020.10.28 1からNの和 1+2+3+ … +N=?
2020.10.21 画像の上下反転 画像を上下反転する方法
2020.10.19 指定色の画素数取得 指定RGBの画素数は何個?
2020.10.13 2値化 その2 2値のBMP画像を作成
2020.10.07 3辺の長さで三角形かを判定 3辺abcで三角形が作れるか?
2020.10.06 画像のミラー反転 画像をミラー(鏡)反転する方法
2020.09.03 お札とコインの数 必要なお札と硬貨の枚数?

■広告

フィギュア予約最大25%OFF+ポイント5%還元!ホビーサーチ

~約8,000名の受講生と80社以上の導入実績~ 企業向けプログラミング研修ならCodeCamp

日本最大級ショッピングサイト!お買い物なら楽天市場

 

 

 

 

 

 

 

 

Topへ