アプリ版:「スタンプのみでお礼する」機能のリリースについて

 JAVAの初心者です、宜しくお願いします。
  
 テキストボックスに入力された値を、数字か文字列かを判定する関数ってありますか、VBでは「isNumeric」とかがあるのですが、JAVAではヒットしませんでした。

 どこからどのように調べるのでしょうか。
 いいサイトがあれば教えて下さい。

A 回答 (2件)

サイトは「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を使うかなぁ。
    • good
    • 0
この回答へのお礼

anmochiさん、有難う御座いました。

お礼日時:2008/05/09 09:31

・ たとえば、整数か文字列かの場合、クラス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)を発生します。
    • good
    • 1
この回答へのお礼

autyさん、有難う御座いました。
一番簡単そうですね。

お礼日時:2008/05/09 09:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています