回答編集履歴

2

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

2018/09/27 21:50

投稿

opyon
opyon

スコア1009

test CHANGED
@@ -82,6 +82,22 @@
82
82
 
83
83
 
84
84
 
85
+ //整数判定
86
+
87
+ Pattern p = Pattern.compile("^[0-9]*$");
88
+
89
+ Matcher m = p.matcher(buf);
90
+
91
+ if(! m.find()) {
92
+
93
+ System.out.println("半角数字以外が入力されました。");
94
+
95
+ continue;
96
+
97
+ }
98
+
99
+
100
+
85
101
  //3桁カンマ区切りの文字列に変換
86
102
 
87
103
  NumberFormat nf = NumberFormat.getInstance();

1

NumberFormatに変更

2018/09/27 21:49

投稿

opyon
opyon

スコア1009

test CHANGED
@@ -1,6 +1,14 @@
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
2
 
3
- 上記より3桁ごとにカンマをはさむコードを引用
3
+ 上記より3桁ごとにカンマをはさむコードを引用~~
4
+
5
+
6
+
7
+ -修正-
8
+
9
+ @katoyさんの回答を参考に、3桁カンマ区切りにする処理を`NumberFormat`へ変更修正しました。
10
+
11
+ [Java NumberFormatクラスを使って数値を3桁カンマ区切りにフォーマット(整形)する](https://www.javalife.jp/2018/01/20/post-243/)
4
12
 
5
13
 
6
14
 
@@ -76,7 +84,9 @@
76
84
 
77
85
  //3桁カンマ区切りの文字列に変換
78
86
 
87
+ NumberFormat nf = NumberFormat.getInstance();
88
+
79
- String[] strNum = insComma(Integer.parseInt(buf)).split("");
89
+ String[] strNum = nf.format(Integer.parseInt(buf)).split("");
80
90
 
81
91
 
82
92
 
@@ -100,64 +110,6 @@
100
110
 
101
111
  }
102
112
 
103
-
104
-
105
- //以下引用
106
-
107
- //http://edu.clipper.co.jp/pg-3-7.html
108
-
109
- //桁ごとにカンマをはさむプログラム例( Java版 )
110
-
111
- private static String insComma(int num) {
112
-
113
- String result = "";
114
-
115
- String temp = "";
116
-
117
- boolean minus = false;
118
-
119
-
120
-
121
- if (num < 0)
122
-
123
- minus = true;
124
-
125
- String nstr = Integer.toString(Math.abs(num));
126
-
127
- int len = nstr.length();
128
-
129
- int keta = 0;
130
-
131
- /* 下位から順に数字を取り出し3桁の区切りに,を入れる */
132
-
133
- for (int i = len - 1; i >= 0; i--) {
134
-
135
- temp += nstr.charAt(i);
136
-
137
- keta++;
138
-
139
- if (keta % 3 == 0 && keta != len)
140
-
141
- temp += ",";
142
-
143
- }
144
-
145
- if (minus)
146
-
147
- temp += "-";
148
-
149
-
150
-
151
- /* sに逆順にコピーする */
152
-
153
- for (int i = temp.length() - 1; i >= 0; i--)
154
-
155
- result += temp.charAt(i);
156
-
157
- return result;
158
-
159
- }
160
-
161
113
  }
162
114
 
163
115
  ```