質問するログイン新規登録

回答編集履歴

2

半角数字整数判定処理追加

2018/09/27 21:50

投稿

opyon
opyon

スコア1009

answer CHANGED
@@ -40,6 +40,14 @@
40
40
  break;
41
41
  }
42
42
 
43
+ //整数判定
44
+ Pattern p = Pattern.compile("^[0-9]*$");
45
+ Matcher m = p.matcher(buf);
46
+ if(! m.find()) {
47
+ System.out.println("半角数字以外が入力されました。");
48
+ continue;
49
+ }
50
+
43
51
  //3桁カンマ区切りの文字列に変換
44
52
  NumberFormat nf = NumberFormat.getInstance();
45
53
  String[] strNum = nf.format(Integer.parseInt(buf)).split("");

1

NumberFormatに変更

2018/09/27 21:49

投稿

opyon
opyon

スコア1009

answer CHANGED
@@ -1,6 +1,10 @@
1
- [3桁ごとにカンマをはさむプログラム例( Java版 )](http://edu.clipper.co.jp/pg-3-7.html)
1
+ ~~[3桁ごとにカンマをはさむプログラム例( Java版 )](http://edu.clipper.co.jp/pg-3-7.html)
2
- 上記より3桁ごとにカンマをはさむコードを引用
2
+ 上記より3桁ごとにカンマをはさむコードを引用~~
3
3
 
4
+ -修正-
5
+ @katoyさんの回答を参考に、3桁カンマ区切りにする処理を`NumberFormat`へ変更修正しました。
6
+ [Java NumberFormatクラスを使って数値を3桁カンマ区切りにフォーマット(整形)する](https://www.javalife.jp/2018/01/20/post-243/)
7
+
4
8
  ```java
5
9
 
6
10
  import java.io.BufferedReader;
@@ -37,7 +41,8 @@
37
41
  }
38
42
 
39
43
  //3桁カンマ区切りの文字列に変換
44
+ NumberFormat nf = NumberFormat.getInstance();
40
- String[] strNum = insComma(Integer.parseInt(buf)).split("");
45
+ String[] strNum = nf.format(Integer.parseInt(buf)).split("");
41
46
 
42
47
  //辞書参照して漢数字に変換
43
48
  String strKanji = "";
@@ -49,34 +54,5 @@
49
54
  System.out.println(strKanji);
50
55
  }
51
56
  }
52
-
53
- //以下引用
54
- //http://edu.clipper.co.jp/pg-3-7.html
55
- //桁ごとにカンマをはさむプログラム例( Java版 )
56
- private static String insComma(int num) {
57
- String result = "";
58
- String temp = "";
59
- boolean minus = false;
60
-
61
- if (num < 0)
62
- minus = true;
63
- String nstr = Integer.toString(Math.abs(num));
64
- int len = nstr.length();
65
- int keta = 0;
66
- /* 下位から順に数字を取り出し3桁の区切りに,を入れる */
67
- for (int i = len - 1; i >= 0; i--) {
68
- temp += nstr.charAt(i);
69
- keta++;
70
- if (keta % 3 == 0 && keta != len)
71
- temp += ",";
72
- }
73
- if (minus)
74
- temp += "-";
75
-
76
- /* sに逆順にコピーする */
77
- for (int i = temp.length() - 1; i >= 0; i--)
78
- result += temp.charAt(i);
79
- return result;
80
- }
81
57
  }
82
58
  ```