数値 string を含む文字列変数がある場合、値を int や double などに変換できるかどうかを識別する関数はありますか?? Javaで関数名が必要です
質問する
98 次
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 に答える