- ベストアンサー
数字か文字列かを判定する関数
JAVAの初心者です、宜しくお願いします。 テキストボックスに入力された値を、数字か文字列かを判定する関数ってありますか、VBでは「isNumeric」とかがあるのですが、JAVAではヒットしませんでした。 どこからどのように調べるのでしょうか。 いいサイトがあれば教えて下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
・ たとえば、整数か文字列かの場合、クラスIntegerのparseInt(String s)メソッドを使い、例外(NumberFormatException)が発生するかどうかで判断します。 以下のコードを参考にしてみてください。 ------------------------------------------------------------ public class ParseIntSample { public static void main(String[] args) { System.out.println(isInteger("123")); System.out.println(isInteger("123A")); } static boolean isInteger(String num) { try { int n = Integer.parseInt(num); return true; } catch (NumberFormatException e) { return false; } } } ------------------------------------------------------------ 結果 true false ------------------------------------------------------------ 実数の場合は、Double.parseDouble(String s)があります。 これも、例外(NumberFormatException)を発生します。
その他の回答 (1)
- anmochi
- ベストアンサー率65% (1332/2045)
サイトは「Javaの道」さんや「JavaでHello World」さんあたりがお勧め。色んな情報が載っててすっごく良い。 案1.一番手っ取り早いのは、例えばlong値として許される値ならOKという場合 long lTextBoxValue = 0; try { lTextBoxValue = Long.parseLong(jtextbox.getText()); } catch(NumberFormatException e) { ・・・ } という風に、パースしてみて例外をキャッチする。ただ、例外処理というのはコンピュータの処理の中でコストがかかるものなので、多用すると負荷が高くなる。 案2.java.lang.Character#isDigit(int)を使って一文字一文字数値かどうか確かめると確実に分かる。が、全角数字も許されるので半角数字だけにしたいという場合はもう一処理必要。しかもJava5.0ではchar1つ=1文字では無いのでJava1.4と5.0以降を同時に面倒みる必要があるならとてもタイヘン。 案3.もう正規表現でマッチさせりゃいいんじゃないの。 java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("^\-?[0-9]*\.?[0-9]+$"); java.util.regex.Matcher matcher = pattern.matcher(jtextbox.getText()); boolean b = matcher.matches(); こんな感じかな。 一般的にはどのテクが多用されているのかなぁ? 私は面倒なので大体案1を使うかなぁ。
お礼
anmochiさん、有難う御座いました。
お礼
autyさん、有難う御座いました。 一番簡単そうですね。