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

回答編集履歴

5

追記

2018/11/22 09:39

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -8,6 +8,8 @@
8
8
  **public static boolean isNumber(String str)**
9
9
  Deprecated. This feature will be removed in Lang 4.0, use isCreatable(String) instead
10
10
  Checks whether the String a valid Java number.
11
+ > [中略]
12
+ > Non-hexadecimal strings beginning with a leading zero are treated as octal values. Thus the string 09 will return false, since 9 is not a valid octal value.
11
13
 
12
14
  引用元: [NumberUtils (Apache Commons Lang 3.9-SNAPSHOT API)](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/math/NumberUtils.html#isNumber-java.lang.String-)
13
15
 

4

追記

2018/11/22 09:38

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -3,6 +3,14 @@
3
3
  数値を0から書き始めた場合8進数と見做されます。
4
4
  その場合`011`と`063`は合法ですが、`068`と`084`は 0~7 以外の文字を含むので違法です。
5
5
 
6
+ isNumberは、『数値として解釈できるか』判定するようです。
7
+ > **@Deprecated**
8
+ **public static boolean isNumber(String str)**
9
+ Deprecated. This feature will be removed in Lang 4.0, use isCreatable(String) instead
10
+ Checks whether the String a valid Java number.
11
+
12
+ 引用元: [NumberUtils (Apache Commons Lang 3.9-SNAPSHOT API)](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/math/NumberUtils.html#isNumber-java.lang.String-)
13
+
6
14
  解消法
7
15
  ---
8
16
  単に数字のみで構成されているという判定がしたいなら、isDigitsだけ使えば良いかと。
@@ -10,4 +18,6 @@
10
18
  Checks whether the String contains only digit characters.
11
19
  Null and empty String will return false.
12
20
 
13
- 引用元: [NumberUtils (Apache Commons Lang 3.9-SNAPSHOT API)](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/math/NumberUtils.html#isDigits-java.lang.String-)
21
+ 引用元: [NumberUtils (Apache Commons Lang 3.9-SNAPSHOT API)](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/math/NumberUtils.html#isDigits-java.lang.String-)
22
+
23
+ isNumberは目的に沿いませんし、しかもDeprecated(非推奨)です。

3

追記

2018/11/22 09:35

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,4 +1,13 @@
1
1
  > "011"や"063"などの文字列はこのifに引っかからずエラーとならなかったのですが、なぜか"068"、"084"など一部の値はこのチェックに漏れてエラーとなってしまいました。
2
2
 
3
3
  数値を0から書き始めた場合8進数と見做されます。
4
- その場合`011`と`063`は合法ですが、`068`と`084`は 0~7 以外の文字を含むので違法です。
4
+ その場合`011`と`063`は合法ですが、`068`と`084`は 0~7 以外の文字を含むので違法です。
5
+
6
+ 解消法
7
+ ---
8
+ 単に数字のみで構成されているという判定がしたいなら、isDigitsだけ使えば良いかと。
9
+ > **public static boolean isDigits(String str)**
10
+ Checks whether the String contains only digit characters.
11
+ Null and empty String will return false.
12
+
13
+ 引用元: [NumberUtils (Apache Commons Lang 3.9-SNAPSHOT API)](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/math/NumberUtils.html#isDigits-java.lang.String-)

2

修正

2018/11/22 09:33

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,1 +1,4 @@
1
+ > "011"や"063"などの文字列はこのifに引っかからずエラーとならなかったのですが、なぜか"068"、"084"など一部の値はこのチェックに漏れてエラーとなってしまいました。
2
+
1
- 間違えて投稿しまし。編集しますのでしばらくお待ちください
3
+ 数値を0から書き始め場合8進数と見做されます。
4
+ その場合`011`と`063`は合法ですが、`068`と`084`は 0~7 以外の文字を含むので違法です。

1

修正

2018/11/22 09:30

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,1 +1,1 @@
1
- > "011"や"063"などの文字列はこのifに引っかからずエラーとならなかったのですが、なぜか"068"、"084"など一部の値はこのチェックに漏れエラーとなってしまいました。
1
+ 間違え投稿しました。編集しますのでしばらくお待ちください。