Q&A
javaで、画面から入力された値が数字か文字列か判定したいのですが、簡単な方法ってあるのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答3件
7
ベストアンサー
単純に数字のみか、数字以外が含まれるかを判断するのであれば、ぱっと思いつくのは以下の2通りです。
1.数値型の型にparseして例外が発生するかどうかで判定
(例)
static boolean isNum(String number) { try { Integer.parseInt(number); return true; } catch (NumberFormatException e) { return false; } }
2.数値の正規表現にマッチするかで判定
(例)
static boolean isNumMatch(String number) { java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("^[0-9]*$"); java.util.regex.Matcher matcher = pattern.matcher(number); return matcher.matches(); }
投稿2014/07/05 02:30
総合スコア463
2
投稿2014/09/29 07:37
総合スコア1356
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
1
『パースする前にString型の値が数字かどうかを判定するには、どんな方法がありますか?』
という、質問に対しては、try-catchを使ったり正規表現を使ったり、すでに諸賢が答えられている方法でよいでしょう。
ただし、『パースする前にString型の値が数字かどうかを判定する』というプロセスを毎度繰り返すのはいささかよろしくないと思います。
大した処理ではないとはいえコードの重複というものです。
実装をどうするかは置いておいて、たとえば、
String型のデータsが与えられたら、常に以下のような形にするのがようのではないでしょうか。
int i = Text.stringToInt(s);
Textは文字列を扱うユーティリティクラスを想定。stringToInt(...)はStringをパラメータにして、intを返すstaticメソッド。
stringToInt(...)は、パラメータがnullや数字に変換できない文字列の場合は、例以外を発生することはなく、常に0を返すでしょう。
また、stringToInt(...)内で全角数字を半角数字に変換してしまったりしてもいいですね。
さらにいうと、
int i = DataConvertUtils.objectToInt(s);
DataConvertUtilsはObjectを様々方に変換するユーティリティクラスを想定。objectToInt(...)はObjectをパラメータにして、intを返すstaticメソッド。
質問の意図からずいぶん離れた回答だね、と言われたらその通りです。すみません。
投稿2016/09/30 05:13
総合スコア12
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
意見交換
受付中
クラスの public function について、public を省略しますか?しませんか?
回答10
クリップ0
更新
2023/05/24
意見交換
受付中
Javaの抽象クラスとインタフェースの使い分け
回答2
クリップ0
更新
2023/06/01
Q&A
解決済
【Java】Arraysクラスのインスタンス生成ができない理由について
回答2
クリップ0
更新
2023/05/21
Q&A
受付中
「リスコフの置換原則」はインターフェースでも適用されますか?
回答2
クリップ0
更新
2023/05/23
Q&A
解決済
Uriの中身(存在)チェックのやり方について
回答2
クリップ0
更新
2023/05/26
Q&A
解決済
Javaの外部ライブラリが使えない
回答1
クリップ0
更新
2023/05/30
Q&A
受付中
データから最年長を表示したい
回答3
クリップ0
更新
2023/05/31
同じタグがついた質問を見る
Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。