今JAVAの勉強中です。
下記の問題が与えられて、うまくできなくて、ソースを教えて頂きたいです。
問題:
与えられた金額を貨幣にした時の紙幣と硬貨の枚数を算出し、表示するプログラムを作成してください。
0枚の紙幣、硬貨に関しては表示されないように。
【ヒント】
今回のプログラムではユーザの操作により金額が与えられます。
その際にすべきエラー処理を忘れずに組み込むこと。
【引数の渡し方】
コマンドプロンプトより下記のようにコマンドを実行することにより金額をプログラム外部から渡すことができる。
java ex 1117823
No.6ベストアンサー
- 回答日時:
>while (yen >= yentype[i]) {
> yen -= yentype[i];
> count[i]++;
>}
割り算知らないの?
count[i] = yen / yentype[i]; //商
yen = yen % yentype[i]; //剰余
普通はこうやるな。
>System.out.println("金額を入力してください");
println の説明を読んだことがありますか?
「改行が付く」とあるはず。printメソッドを使う。
System.out.print("金額を入力してください>_ "); のように・・・
こっちは改行されないから、入力プロンプトが直後に出てくる。
>Integer.parseInt(br.readLine());
数字でないものが入力される、あるいは桁数が大きすぎると、例外が
発生する。try~catchで防ぎ、catchブロックでエラーメッセージを
出力し、System.exit(1); などで、処理を終了する。因みに、正常に
終わったら System.exit(0); のように終了コードを変えると、少し
気が利いているね。
>java ex 1117823
クラス名が「ex」ということだが、クラス名の先頭は大文字が原則
なので、何かの間違いでは?小文字で作っても動作するけど、気持ち
悪い。尚、実際はclasspathオプションが必要になる。下記参照
java -classpath /home/~/bin Ex 1117823
1117823 これはmainメソッドのargsに渡される引数になる。
すると、(args.length > 0)なら、args[0]を使い、 (args.length == 0)なら、
標準入力から入力しろってことじゃぁないの?
No.5
- 回答日時:
金種を1万円札、5千円札、1千円札、硬貨は500円、100円、50円、
10円、5円、1円とします。
何も工夫しないなら、以下の手順です。
(1)金額を10000で割る。商が1万円札の枚数になり、剰余が次の金額になる。
(2)金額を5000で割る。商が5千円札の枚数になり、剰余が次の金額になる。
(3)金額を1000で割る。商が1千円札の枚数になり、剰余が次の金額になる。
以下省略
人間って、普通は上のように考えてますよね。単に言葉に直し、
プログラムにし易いように計算式を書いただけです。
「教える」なんて程のものじゃないでしょう?プログラムの能力は
人(機械)に理解してもらう説明力のことです。日本語が下手で
説明のマズイ人はプログラムもダメとしたものです。
最初のうちは冗長で「あたりまえだろ」みたいなことも記述するのは
しょうがないことですが、「文書化する」を面倒がらずに続ければ
この能力は向上しますので、がんばってください。
この回答への補足
ありがとうございます。
ソースを書いてみました。
import java.io.*;
public class aa {
public static final int[] YEN_TYPES = {
10000,5000,1000,500,100,50,10,5,1
};
public static int[] getYenCount(int yen, int[] yentype) {
int[] count = new int[yentype.length];
for (int i = 0; i < yentype.length; i++) {
while (yen >= yentype[i]) {
yen -= yentype[i];
count[i]++;
}
}
return count;
}
public static void main(String[] args) throws IOException {
System.out.println("金額を入力してください");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int yen = Integer.parseInt(br.readLine());
int[] count = getYenCount(yen, YEN_TYPES);
for (int i = 0; i < YEN_TYPES.length; i++) {
if(count[i] == 0) {
i++;
}
else{
System.out.println(YEN_TYPES[i] + "円\t" + count[i] + "枚");
}
}
}
}
このソースを改善したい場所はいくつがあります。
(1)金額を入力の提示のところは画面上に”金額を入力してください>_”のように表示させ、入力した金額は“_”の右にしたいですが、どうすれば可能ですか?
(2)エラーメッセージをつくタイミングと条件は何にすればいいですか?
(3)与えられた問題で
「【引数の渡し方】
コマンドプロンプトより下記のようにコマンドを実行することにより金額をプログラム外部から渡すことができる。
java ex 1117823」 を書いてあるんですが、java ex 1117823の意味は何ですか?
No.4
- 回答日時:
【ヒント】
それは「金種表」と呼ばれてます。
給与や出張旅費の支払いなどの事務処理に使われるので解説やサンプルは検索すれば大量に見つかります。
No.3
- 回答日時:
幾つかの要素があります。
アナタに出来ないことは何でしょう?
(1)コマンドラインの文字列の取得方法が分からない。
(2)金額として正しいかのチェック方法がわからない。
A.数字以外の文字がないか
B.¥とか,(カンマ)は許すか、許さないか
(3)金額が確定したあと、金種×数量の組み合わせを求める方法が
分からない。
(3)が分からない場合、金種(例えば10万円金貨や2千円紙幣はOK?)
および、数量の限定があるかないかです。
数量に限定が無ければ300円は100円×3ですが、100円が2枚しか
ないと、100円×2+50円×2のようにしなければなりません。
数量が限られるのは、けっこう難しいんですよ。制限があるのと
ないのでは全然、方法が違いますからね。
どこがどう分からないのか開示してください。
この回答への補足
申し訳ありません、初心者なので、上記で書いてある問題は全部わからないです…
(3)は数量が限定していません。
まずアルゴリズムから教えていただけますか?よろしくお願いします。
No.1
- 回答日時:
「用いる通貨の種類」を決めておかないと問題にならないんだけど....
「うまくできない」とはどういうことでしょうか?
・アルゴリズムが想像つかない?
・アルゴリズムはわかるけどそれをどうプログラムに書けばいいのかわからない?
・プログラムはかけるけど期待する答えと一致しない?
・その他?
とりあえず「できるところ」までは自力でやってみてください.
この回答への補足
通貨の種類は日本円で、紙幣は10000、5000、1000(2000ありとなしの二パターンある)、硬貨は500、100、50、10、5、1 になります。
「うまくできない」とは
アルゴリズムが想像つかないです。
そしてjava ex 1117823の意味はわからないです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 所得・給料・お小遣い キャッシュレス社会進行するなら1万円札って必要でしょうか? 1円、5円硬貨も嫌じゃないですか? 5 2023/06/28 16:33
- 北アメリカ 米ドルはなぜ「1ドル」が未だに紙幣メイン流通なのですか?(自販機向けのコインは補助的流通) 4 2023/07/01 09:16
- その他(お金・保険・資産運用) エラー紙幣 1万円札で 壱万円の表記の万の字が半分近く(周辺を含め)消えています。 郵便局で下ろした 4 2022/08/16 22:03
- 事件・犯罪 これらの硬貨に関することは犯罪ですか? 4 2022/08/21 20:30
- 数学 【 数A 場合の数 】 問題 10円硬貨2枚,50円硬貨3枚, 100円硬貨3枚の硬貨のうち一部また 2 2022/07/05 19:57
- 数学 +5する理由をおしえてください 4 2023/04/18 17:40
- 数学 昨日聞いた質問の次の問なのですが 4 2023/04/19 12:37
- 経済学 兌換紙幣と正貨について。 兌換紙幣は正貨と同等。 例えば1万の兌換紙幣なら、1万の正貨と交換できる。 1 2022/11/11 20:17
- 財務・会計・経理 金額を入力したら自動でお金(を吐き出してくれるような機械を探しています。 4 2023/06/17 09:58
- 歴史学 兌換紙幣と正貨について。 兌換紙幣は正貨と同等。 例えば1万の兌換紙幣なら、1万の正貨と交換する必要 1 2022/11/11 19:56
このQ&Aを見た人はこんなQ&Aも見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
2024年のうちにやっておきたいこと、ここで宣言しませんか?
2024年も残すところ50日を切りましたね。 ことしはどんな1年でしたか? 2024年のうちにやっておきたいこと、 よかったらここで宣言していってください!
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
プログラミングの問題です 「金額を入力させ、500円玉、100円玉、50円玉、10円玉、1円玉の組み
C言語・C++・C#
-
入力したお金の金額からお札の枚数を求めるプログラムについて質問です。
C言語・C++・C#
-
javaでカレンダー作成
Java
-
-
4
MySQLのDATE型カラム値がNULLの時、JSTL文でアクセスするとエラーになります
MySQL
-
5
Java、2の0乗~10乗の表示
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
時間の取得
-
ファイルダイアログを開いた時...
-
全角スペースのチェックについて
-
if文からcase文への置き換え
-
例外ってIf文の中に入れますか...
-
XMLパーサの種類について混乱し...
-
VB.Net Object型 空かどうか
-
メソッドが存在するかどうかの...
-
C#の捕捉されない例外処理の対...
-
【java】ファイル名から画像を取得
-
VC++におけるCStringの変換
-
【JSPがブラウザで表示されませ...
-
VBA Evaluate関数 型が一致しま...
-
String型の日付(2005/11/25)の...
-
文字列からダブルクオートの削除
-
エクセルVBAで、条件に一致する...
-
配列の重複する値とその個数を...
-
変数名の付け方
-
private static という変数の修飾
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
VB.Net Object型 空かどうか
-
VB.NETで16進数が正しいかどう...
-
連続する「\\」をひとつの「\\...
-
VBA Evaluate関数 型が一致しま...
-
Timestamp型への変換について(J...
-
文字列からダブルクオートの削除
-
String型の日付(2005/11/25)の...
-
【JAVA】与えられた金額を貨幣...
-
C#の捕捉されない例外処理の対...
-
時間の取得
-
C# UriFormatExceptionの回避
-
VC++におけるCStringの変換
-
例外ってIf文の中に入れますか...
-
nullで、return出来るのはどん...
-
0除算の例外処理ができない!!...
-
WebClient()以外でネットにアク...
-
Javaで文字列をゼロ埋め(ゼロパ...
-
Excelでのエラー
-
タトゥーや墨を入れる人の共通点
おすすめ情報