![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
金種表のソースを書きました。
表示ループのif文(枚数0枚の場合表示しない)を実行しない場合は
正確の結果が出てくれるんですが、
このまま実行したら、たとえば引数は222の場合は
実行した結果は 「100円 2枚」、10円と1円の枚数を表示してくれなっかです。
原因を教えて頂けますか?
ループのどこが間違えたのがわかりません…
import java.io.*;
public class ex1 {
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++) {
count[i] = yen / yentype[i]; //商
yen = yen % yentype[i]; //剰余
}
return count;
}
public static void main(String args[]) throws IOException {
int yen = Integer.parseInt(args[0]);
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] + "枚");
}
}
}
}
No.2ベストアンサー
- 回答日時:
気になる点も含めて
>class ex1
クラス名は先頭を大文字に.class Ex1
>getYenCount(int, int[])
使用例から見て2番目の引数は必要ない.
というのもYEN_TYPESはstaticだから.
getYenCount(int)
>import java.io.*;
>throws IOException
これらは必要ない.
むしろNumberFormatExceptionなどを処理すべき.
>if文
必要ない.
for文は最後にインクリメントするから,もし0枚なら何もせず,次の紙幣または硬貨の処理へ移ればいい.
とうことで,for文以降は
if(count[i] != 0)
System.out.println(YEN_TYPES[i] + "円\t" + count[i] + "枚");
とすればいい.
この回答への補足
ありがとうございました!すごく参考になりました。
今は下記の入力チェックメソッドを入れたいですが、
タイミングはよくわかりません、下手に入れてコンパイルしたらエラーいっぱいが出てしまいました。
よろしければ、教えていただけますか?
public static boolean isHalfNum(String str) {
if (str == null || !str.matches("^[0-9]+$")) {
// 半角数字正規表現に一致しない場合、エラー
return false;
}
return true;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- Java Java 配列<選挙> 4 2023/07/31 15:07
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
Randomメソッドの確率設定
-
階乗
-
2つのスクロールバーを連動させ...
-
Java 配列<選挙>
-
論理演算子”||”またはの入力方法
-
16進数数字を結合して、10進数...
-
画面出力の際の繰り返しと入力...
-
*で正三角形を出力
-
更新処理について
-
テキストボックスに入力された...
-
JAVAのfor文で困っています。
-
複数の数字を計算
-
フローチャートが作れず、困っ...
-
リトルエンディアン→ビッグエン...
-
Ctrl+Zが入力されると終了する...
-
Javaの練習問題
-
javaのエラーが回収できない
-
プログラムの平均値の出し方。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
java キーボード入力された値の...
-
テキストボックスに入力された...
-
論理演算子”||”またはの入力方法
-
総称型ArrayList<E>への参照...
-
7つ数字を表示したら改行すると...
-
Ctrl+Zが入力されると終了する...
-
countに実行した回数をいれたい...
-
キーボードから10人分の点数を...
-
Java、2の0乗~10乗の表示
-
Randomメソッドの確率設定
-
数値⇒漢数字変換 java
-
コマンドライン引数の例外処理...
-
Java 入力した整数値の合計を、...
-
javaのエラーが回収できない
-
階乗の式
-
2つのスクロールバーを連動させ...
-
C#の質問
-
Java キーボードから負の数が入...
おすすめ情報