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

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

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

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

String

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

Q&A

受付中

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

notinoti
notinoti

総合スコア52

Java

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

String

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

3回答

1グッド

7クリップ

201355閲覧

投稿2014/11/08 15:53

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

Abeginner👍を押しています

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

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

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

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答3

15

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

beginer190105, siratama_neko, swordone, hirokawai, naoyan, kpiyohiko, settyan, stmkza, Ogiwara, kskok, 他5名👍を押しています

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

Tomohiro12

2017/06/14 02:03

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

1

整数であるかどうかを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

stmkza👍を押しています

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

退会済みユーザー

退会済みユーザー

2016/12/26 23:50

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

2016/12/30 11:55

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

0

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

https://teratail.com/questions/807

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

投稿2014/11/10 02:45

TaMaMhyu

総合スコア1356

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

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

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

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

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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

String

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