2020.09.03

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ソースコード

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

JapaneseMoney.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
import java.io.*;

class JapaneseMoney {
	// 10000円札の枚数
	static int getNumber_bill_10000( int yen )
	{
		return yen / 10000;
	}

	// 5000円札の枚数
	static int getNumber_bill_5000( int yen )
	{
		return ( yen % 10000 ) / 5000;
	}

	// 1000円札の枚数
	static int getNumber_bill_1000( int yen )
	{
		return ( ( yen % 10000 ) / 1000 ) % 5;
	}

	// 500円玉の枚数
	static int getNumber_coin_500( int yen )
	{
		return ( yen % 1000 ) / 500;
	}

	// 100円玉の枚数
	static int getNumber_coin_100( int yen )
	{
		return ( ( yen % 1000 ) / 100 ) % 5;
	}

	// 50円玉の枚数
	static int getNumber_coin_50( int yen )
	{
		return ( yen % 100 ) / 50;
	}

	// 10円玉の枚数
	static int getNumber_coin_10( int yen )
	{
		return ( ( yen % 100 ) / 10 ) % 5;
	}

	// 5円玉の枚数
	static int getNumber_coin_5( int yen )
	{
		return ( yen % 10 ) / 5;
	}

	// 1円玉の枚数
	static int getNumber_coin_1( int yen )
	{
		return ( yen % 10 ) % 5;
	}


	// メイン
	public static void main( String[] args ) {
		// 金額
		int yen = 0;
		
		// キーボードから金額を入力
		BufferedReader input = 
			new BufferedReader( new InputStreamReader( System.in ) );

		try {
			System.out.print( "金額を入力してください(Enterキーで終了) : ");
    	                String buf = input.readLine();
			yen = Integer.parseInt( buf );
		}
		catch ( Exception e ) {
			// 入力エラー
			System.out.println( e );
			return;
		}

		// 0円未満の処理
		if ( 0 > yen ) {
			System.out.println( "0円以上を入力してください" );
			return;
		}


		// 結果を表示
		System.out.println( "10000円札: " + getNumber_bill_10000( yen ) );
		System.out.println( "5000円札 : " + getNumber_bill_5000( yen ) );
		System.out.println( "1000円札 : " + getNumber_bill_1000( yen ) );
		System.out.println( "500円玉  : " + getNumber_coin_500( yen ) );
		System.out.println( "100円玉  : " + getNumber_coin_100( yen ) );
		System.out.println( "50円玉   : " + getNumber_coin_50( yen ) );
		System.out.println( "10円玉   : " + getNumber_coin_10( yen ) );
		System.out.println( "5円玉    : " + getNumber_coin_5( yen ) );
		System.out.println( "1円玉    : " + getNumber_coin_1( yen ) );
	}
}

実行結果

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis JapaneseMoney.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac JapaneseMoney.java

カウントアップを実行

C:\talavax\javasample>java JapaneseMoney

出力結果

金額を入力してください(Enterキーで終了) : 1980
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以上を入力してください"というメッセージがコンソール出力されます。

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

関連コンテンツ

Javaの学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

数学に関係するJavaのメソッドやソースコードなどを紹介しています。

2022.10.25

基本的な計算である足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)を行うプログラム作成。

2020.03.23

割り算で割り切れずに残った端数を剰余(余り)といいます。この剰余の計算をJavaのソースコードを使って解説しています。

2020.03.23

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

プログラミング、ITに関する用語をまとめています。

2022.10.17

メソッドを抜けるときに使用するreturn文について説明しています。

2020.03.20

条件式を判断して処理を分岐する方法を詳しく説明しています。

2023.03.20

プログラムの最初に実行されるメソッドは?

2022.12.13

プログラミングで使う変数って何?

2020.03.23

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

自然数と整数って何が違う?

2020.03.23

Javaの演算子'/'を使って割り算を行った結果と注意点などについて説明。

2020.03.23

プログラミング言語とは?種類や特徴について説明しています。

2022.08.03

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

広告