2017-11-20 15 views
0

コードの各行が何をしているか説明できる人がいれば迷っていました。私は基本的に-1と-iと混同しています。 助けてください!とにかく、TEMP値のない配列を逆にすることもできますか?逆の配列コードの説明ヘルプが必要JAVA

for (int i = 0; i < numbers.length/2; i++) { // why divide by 2 int temp = numbers[i]; numbers[i] = numbers[numbers.length - 1 - i];// what this does? numbers[numbers.length - 1 - i] = temp;]; numbers [numbers.length - 1 - i] = temp;

答えて

1

簡単に言えば、このループは配列内の値の位置を入れ替えています。

たとえば、この配列は[1, 2, 3, 4]です。

このループは、iという要素を変数tempに設定することで開始します。 次に、配列の末尾の数字からまで移動した反復/位置(i)の数は、配列の現在の位置(i)に設定され、1の代わりになります。つまり、スワップされていない最も遠い要素を選択します。その直後に、tempは、旧位置4の位置に設定されます。

最初の反復は、配列が[4, 2, 3, 1]

第2の反復が[4, 3, 2, 1]

アレイは現在反転さに見えるように配列させるように見えるようにします。しかし、配列の長さの半分しか反復しなかったことに注意してください。反復処理を続ける必要はなく、さらに進めるならば、配列外のエラーが発生します。

.lengthがからカウントアップ配列の要素数を返すため-1の理由がある)

0

最初の繰り返しは、この

を行うだろう、のは、あなたの配列が 10の長さを持っているとしましょうあなたは012を必要とするので、

i = 0

int temp = numbers[0]; 
numbers[0] = numbers[10 - 1 - 0]; // first value becomes the last value in the array 
numbers[10 - 1 - 0] = temp; // last value becomes the previously first value in the array 

2値は、1つのステップで変更します手順を完了してください。

追加の変数を使用せずに2つの整数を交換したい場合は、あなたがxorビット演算子を使用することができます(^

例:それon wikipedia

背後にある理論について

int x = -10; 
int y = 125; 
x ^= y; 
y ^= x; 
x ^= y; 

詳細

関連する問題