2

繰り返し処理するResultSetがあり、view(html)のようなレポートを作成します。問題は、一部の列が(SQLの数学関数の結果として)Long値を返すことです。

この値をDataTypeで識別できる簡単な方法はありますか?

このようなことをしたいとしましょう

String x = rs.getString(1);
if(MyUtilClass.isOfTypeLong(x)){
  //implement my bussiness logig
}

私はこの投稿を見ました。文字列に含まれるデータのタイプをどのように判断しますか?。現在、これ以上良いものがない場合は、正規表現ソリューションを続行します。

4

3 に答える 3

5

Long.valueOf(String)最初にそれをとして解析してみませんか?Longそれが失敗すると、それをで解析DoubleDouble.valueOf(String)ませんか?

NumberFormatException文字列を解析できない場合は、どちらもaをスローします。

public static void main(String[] args) throws Exception {
    final String s1 = "1234567890";
    System.out.println(isParsableAsLong(s1));    // true
    System.out.println(isParsableAsDouble(s1));  // true

    final String s2 = "1234.56789";
    System.out.println(isParsableAsLong(s2));   // false
    System.out.println(isParsableAsDouble(s2)); // true
}

private static boolean isParsableAsLong(final String s) {
    try {
        Long.valueOf(s);
        return true;
    } catch (NumberFormatException numberFormatException) {
        return false;
    }
}

private static boolean isParsableAsDouble(final String s) {
    try {
        Double.valueOf(s);
        return true;
    } catch (NumberFormatException numberFormatException) {
        return false;
    }
}
于 2012-11-12T14:18:29.390 に答える
2

.区別するために使用できる場合:

    String number  = "12345";
    if(number.indexOf(".")>=0){
        //decimal
        Double doubleValue = Double.valueOf(number);
    }else{
        Long longValue = Long.valueOf(number);
    }

例外処理あり:

    String number  = "12345";
    //You may define two variables as Double & Long (as used in previous example)
    Number formattedNumber = null;

    try{
        if(number.indexOf(".")>=0){
            //decimal
            formattedNumber = Double.valueOf(number);
        }else{
            formattedNumber = Long.valueOf(number);
        }
    }catch(NumberFormatException nfe){
        System.out.println("Not a double or Long");
    }
于 2012-11-12T14:22:32.413 に答える
1

これを試して

Long l=Long.parseLong(x);

解析に失敗した場合は、catchブロックで例外が発生します。

Double=Double.parseDouble(x)

それでも例外が発生した場合は解析できません

于 2012-11-12T14:27:01.700 に答える