4

私は、ユーザー入力が文字列と整数の混合配列であるプログラムに取り組んでいます。例えば:

犬1023猫カエル22象

各インデックスのタイプを変更せずに、この配列をソートすることになっています。したがって、出力は次のようになります。

猫1022犬象23カエル

コンソールから行を読み取った後、文字列トークナイザーを使用して各要素を調べています。その後、parseIntを試行し、例外がスローされた場合は文字列であると想定し、そうでない場合は整数であると想定します。トークンが数値であるかどうかを判断するためのより良い方法はありますか?

ありがとうございました。

4

3 に答える 3

6

プログラムロジックの例外に依存することは、例外が遅いため、不適切な方法と見なされます。代わりに、正規表現を使用できます。

Matcher numericalMatcher = Pattern.compile("^-?\\d+$").matcher(token);
if( numericalMatcher.matches() ) {
   // Token is a number
} else {
   // Token is not a number
}

http://docs.oracle.com/javase/1.6.0/docs/api/java/util/regex/Pattern.htmlおよびhttp://docs.oracle.com/javase/1.6.0/docs/apiを参照してください。 /java/util/regex/Matcher.html

于 2012-04-07T07:36:09.937 に答える
3

使用parseIntすることは悪い考えではありません。

または、正規表現を使用することもできますが、より実用的でシンプルな選択だと思います。

于 2012-04-07T07:34:29.347 に答える
0

たとえば、「StringUtils.isNumeric」を使用して、文字列が数値であるかどうかを検出できます。

http://commons.apache.org/lang/api-2.3/org/apache/commons/lang/StringUtils.html

欠点は、ライブラリを含める必要があることです。

于 2012-04-07T08:48:19.417 に答える