2020.09.03
Javaプログラミング
お札とコインの数
入力した金額からお札と硬貨の最少枚数を求める方法を解説します。
500円硬貨の枚数 = ( 12800 % 1000 ) / 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 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
以上が、金額からお札の枚数と硬貨の枚数を求めるプログラムの説明です。