質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

Q&A

3回答

204809閲覧

JavaでString型の値が数値であるかをチェックするには?

notinoti

総合スコア52

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

1グッド

7クリップ

投稿2014/11/08 15:53

JavaでString型の数値チェック処理について質問です。
パースする前にString型の値が数字かどうかを判定するには、どんな方法がありますか?

Abeginner👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

String型の値が数値かどうかチェックする方法としてぱっと思いつくのは以下の3つですね。

(1)数値のパース処理をtry-catchで囲って例外が出るかで判定

lang

1public boolean isNumber(String num) { 2 try { 3 Integer.parseInt(num); 4 return true; 5 } catch (NumberFormatException e) { 6 return false; 7 } 8} 9

(2)数値の正規表現にマッチするかどうかで判定
※正規表現の部分は想定する数値により書き方が変わるのでご注意ください。

lang

1public boolean isNumber(String num) { 2 String regex = "^\-?[0-9]*.?[0-9]+$"; 3 Pattern p = Pattern.compile(regex); 4 Matcher m = p.matcher(num); 5 return m.find(); 6}

(3)Apache Commons Lang ? NumberUtils のAPIを使う

lang

1public boolean isNumber(String num) { 2 return NumberUtils.isNumber(num); 3} 4

※NumberUtilsを使う場合は公式サイトからjarをダウンロードしてください。

◆Apache Commons Lang(ダウンロード)
http://commons.apache.org/proper/commons-lang/download_lang.cgi
◆NumberUtils(API)
http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/math/NumberUtils.html

投稿2014/11/10 02:30

veeyepee

総合スコア197

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tomohiro12

2017/06/14 02:03

(2)の回答は”-.1"が許可されてしまい String a = "-.1"; int b = Integer.valueOf(a); はNumberFormatExceptionになります
guest

0

整数であるかどうかをCharacter#isDigit()メソッドでチェックする方法もあります。

java

1 private static boolean check(String s) { 2 boolean isDigit = true; 3 4 int startIndex = s.charAt(0) == '-' ? 1 : 0; 5 for (int i = startIndex; i < s.length(); i++) { 6 isDigit = Character.isDigit(s.charAt(i)); 7 if (!isDigit) { 8 break; 9 } 10 } 11 12 return isDigit; 13 }

投稿2016/08/25 06:20

編集2016/12/30 11:54
java-beginner

総合スコア452

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/12/26 23:50

マイナス数値はfalseになるから1文字目は別途チェック
java-beginner

2016/12/30 11:55

コメントありがとうございます。投稿を修正し、符号のチェックを追加しました。
guest

0

似たような質問が過去にありました。
参考までに。

https://teratail.com/questions/807

すでに回答されている内容とだいたい同じですが…

投稿2014/11/10 02:45

TaMaMhyu

総合スコア1356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問