javaで、画面から入力された値が数字か文字列か判定したいのですが、簡単な方法ってあるのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
単純に数字のみか、数字以外が含まれるかを判断するのであれば、ぱっと思いつくのは以下の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
0
投稿2014/09/29 07:37
総合スコア1356
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
『パースする前に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
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。