3

文字列データ型(変更できないもの)である数値入力パラメーターを受け取っていますが、受け取ったこの値が特定の数値であることを確認する必要があります。つまり、値が5かどうかを確認します。

文字列データ型の受信値を知っていますが、常に数値のみが含まれている必要があります。最初に値を整数データ型に変換してから、等価性テストを実行します。つまり、以下に示すケースBです。

ケースA:

String expected = "3"; 

if(expected.equals(actual)) //...

ケースB:

int expected = 3;

int actualInt = Integer.parseInt(actual);

if(expected == actualInt) //...

正しい方法としてそうする傾向があるので、ケースBを使用して同等性テストを実行することに何か短所があるかどうかを調べたいと思います。

4

3 に答える 3

4

Try-Catch を使用します。

int expected = 3;
int actualInt;
try
{
    actualInt = Integer.parseInt(actual);

    if(expected == actualInt) //...
}
catch(NumberFormatException ex)
{
    // You will reach here when a bad input is given to the parseInt method
    // Handle the failure
}
catch(Exception e)
{
    // All other exceptions here
}

文字列が常に「数値」の値を持つことがわかっている場合でも、例外処理を実装することをお勧めします。心配よりも安全です:)

于 2012-11-07T05:43:48.423 に答える
2

等価チェックのみを行う場合は、文字列の代わりに数値を必要とする操作を行っていないため、ケース A で問題ないと思います。

ケース B で見られる唯一の短所は、等価チェックのために文字列から数値を解析する必要があることです。

ただし、ケース B の利点は、文字列が実際に整数であることを確認する必要がある場合、ケース B を使用する必要があることです。

于 2012-11-07T05:45:02.713 に答える
1

String クラスで静的ファクトリ メソッド valueOf() のオーバーロードされたバージョンを使用することを検討しましたか。

String は、これらのメソッドを提供して、オブジェクトを対応する文字列表現に暗黙的に変換します。

ここに例があります。

int expected = 3;
String.valueOf(expected).equalsIgnoreCase(actual); // is the equality check for numbers.

「実際」が渡されるパラメーターであると仮定します。変数 'actual' に対して null チェックを実行したい場合があります。

于 2012-11-07T05:56:05.397 に答える