0

数値 string を含む文字列変数がある場合、値を int や double などに変換できるかどうかを識別する関数はありますか?? Javaで関数名が必要です

4

3 に答える 3

1
String test = "1234";
System.out.println(test.matches("-?\\d+"));
test = "-0.98";
System.out.println(test.matches("-?\\d+\\.\\d+"));

最初のものは、前にオプションの記号が付いた任意の整数(not int, integer) に一致します (つまり、true を出力します)。2 番目の値は、任意の符号、必要な小数点の前に少なくとも 1 桁、および小数点の後に少なくとも 1 桁ある任意の値に-一致します。double-

また、関数名はString.matchesであり、正規表現を使用しています。

于 2013-11-13T06:09:39.117 に答える
1

私の解決策は、文字列をさまざまな型に解析してから、Java がスローする可能性のある例外を探すことです。これはおそらく非効率的な解決策ですが、コードは比較的短いです。

public static Object convert(String tmp)
{
    Object i;
    try {
        i = Integer.parseInt(tmp);
    } catch (Exception e) {
        try {
            i = Double.parseDouble(tmp);
        } catch (Exception p) {
            return tmp; // a number format exception was thrown when trying to parse as an integer and as a double, so it can only be a string
        }
        return i; // a number format exception was thrown when trying to parse an integer, but none was thrown when trying to parse as a double, so it is a double
    }
    return i; // no numberformatexception was thrown so it is an integer
}

次に、この関数を次のコード行で使用できます。

String tmp = "3"; // or "India" or "3.14"
Object tmp2 = convert(tmp);
System.out.println(tmp2.getClass().getName());

関数をインライン コードに変換して、整数かどうかをテストできます。次に例を示します。

String tmp = "3";
Object i = tmp;
try {
    i = Integer.parseInt(tmp);
} catch (Exception e) {
    // do nothing
}

私は少しずさんで、通常の例外をキャッチしようとしましたが、これはかなり一般的です。代わりに「NumberFormatException」を使用することをお勧めします。

于 2013-11-13T06:10:12.840 に答える