0

int sizeたとえば、リストのサイズなどが含まれている場合int distancemod操作を行うdistance%sizeと、(-size - 1) <= distance <= (size - 1)

つまり、距離は常にこの範囲内になります(-size - 1) <= distance <= (size - 1)

これが正しければ、JDKのCollectionsRotateでの次の条件チェックの意味は何ですか?

 if (size == 0)
    return;  
 distance = distance % size;  
if (distance < 0)  
   distance += size;  
if (distance == 0)  //Why this check????
    return;     

私はここで間違っているかさびているかもしれませんがdistance、この時点で追加の結果としてnullになることはないと思います。そして、リストがあったとして0も、そもそもその条件に到達することはありません。
では、この条件付きチェックが必要ですか?

4

3 に答える 3

4

if distance == n * size(n int)then distance%size == 0。たとえば、distance == 0またはdistance == size

于 2012-05-09T16:15:13.400 に答える
1

まあ、ありますif (distance < 0)が、距離もある可能性がある0ので、スキップし distance += size;ます。したがって、のチェックdistance == 0

次を使用してコードを記述することもできます else if

//if distance is < 0, distance + size can't be 0 (due to the modulo before)
//however, distance could be 0 at this point if distance was 0 before or became 0 due to the modulo
if (distance < 0)  
   distance += size;  
else if (distance == 0)  //Why this check????
   return; 
于 2012-05-09T16:15:17.717 に答える
0

サイズが5で距離が0の場合、加算は行われず、チェックに当たったときに距離はゼロになります。

于 2012-05-09T16:15:06.313 に答える