0

さまざまな長さの配列があり、固定位置から読み取りたいのですが。位置が範囲外の場合は、スローするのではなく、nullを読み取りたいと思います。もちろん私は次のようなことをすることができます

if(theArray.length <= colNum){ result = null; }
else{ result = theArray[colNum]; }

しかし、それはちょっとエレガントではないようです。範囲外の例外をスローする代わりに、theArray[colNum]リターンを除いて動作するワンライナーまたは単純な関数呼び出しを作成できるようにしたいと思います。null私が見落としているようなものはありますか?私はこれを考えすぎていますか?

4

3 に答える 3

2

三項演算子を使用できます。

これがワンライナーです:

result = ((colNum > theArray.length - 1) || (colNum < 0)) ? null : theArray[colNum];
于 2012-10-17T13:18:03.057 に答える
1

読みやすいと思うものによって異なりますが、発生した例外はいつでも使用できます。

public String read(String[] array, int index)
{
    try
    {
        return array[index];
    }
    catch(IndexOutOfBoundsException e)
    {
        return null;
    }
}
于 2012-10-17T13:22:49.110 に答える
0

それは、あなたにとって「エレガント」が何を意味するかによって異なりますか?、それを行うにはいくつかの方法があります。短いコードが必要な場合は、三項演算子を使用してください。

result = theArray.length <= colNum ? null : theArray[colNum];

また、読み取りを実行して、ArrayIndexOutOfBoundsExceptionを試行/キャッチすることもできます。

try { 
    result = theArray[colNum];
} catch(ArrayIndexOutOfBoundsException e) { 
    result = null;
}

また、両方のいずれかをメソッドにカプセル化できるため、呼び出しコードは次のようになります。

result = readFromArray(theArray);
于 2012-10-17T13:25:54.283 に答える