2015-10-21 8 views
1

У меня есть массив из 4 int s, и мне нужно заменить их значениями другого массива. Например: у меня есть массив {5,3,7,2}, и мне нужно заменить значения и получить массив {2,7,3,5}.Изменить значения между двумя массивами

Вот мой код:

public static void main(String args[]){ 
    int array[] = new int[4]; 
    array[0] = 1; 
    array[1] = 4; 
    array[2] = 3; 
    array[3] = 7; 
    int swapArray[] = new int[5]; 

    for (int j = 3; j > 0; j--) { 
     for (int i = 0; i < 4; i++) { 
      swapArray[j] = array[i]; 
      System.out.print(" " + swapArray[j]); 
     } 
    } 
} 

Но это не меняет значения, просто повторяет его 3 раза.

+0

Почему у вас есть два массива разного размера? – AbtPst

+2

также, вы имеете в виду замену или перестановку? – AbtPst

+0

Мне нужно переставить. Исправлены размеры массивов массивов, ty: D – Fireship

ответ

2

Похоже, что вы хотите, чтобы изменить массив. Вы можете сделать это на месте, как,

int[] arr = { 5, 3, 7, 2 }; 
System.out.println(Arrays.toString(arr)); 
for (int i = 0; i < arr.length/2; i++) { 
    int t = arr[i]; 
    arr[i] = arr[arr.length - i - 1]; 
    arr[arr.length - i - 1] = t; 
} 
System.out.println(Arrays.toString(arr)); 

Или, вы можете скопировать его на новый (обратной) массив, как,

int[] arr = { 5, 3, 7, 2 }; 
System.out.println(Arrays.toString(arr)); 
int[] arr2 = new int[arr.length]; 
for (int i = 0; i < arr.length; i++) { 
    arr2[arr2.length - i - 1] = arr[i]; 
} 
System.out.println(Arrays.toString(arr2)); 

Оба выхода примеры (запрашиваемая)

[5, 3, 7, 2] 
[2, 7, 3, 5] 
+0

Спасибо, приятель, но вы можете мне объяснить arr2 [arr2.length - i - 1] = arr [i]; Какое значение он выбирает? Как я понимаю, сначала итера. он выбирает третье значение ... невозможно понять – Fireship

+0

В первом примере он меняет каждое значение, итерируя первую половину массива. Перемещение каждого значения со значением от конца (минус текущий индекс). Во втором примере он копирует каждое значение из конца второго массива в текущий индекс в первом массиве. –

3

Может быть, как это:

public static void main(String args[]){ 
    int array[] = {1,4,3,7}; 
    int swapArray[] = new int[array.length]; 
    for(int i=0;i<array.length;i++) 
     swapArray[i]=array[array.length-1]; 
     System.out.print(" " + swapArray[i]); 
     } 
    } 
+0

Разве это не копирует '7'? –

0

Если вы хотите обратный массив:

С Commons.Lang вы можете просто использовать

int array[] = new int[4]; 
array[0] = 1; 
array[1] = 4; 
array[2] = 3; 
array[3] = 7; 

ArrayUtils.reverse(array); 
// For print output 
System.out.println(Arrays.toString(array)); 
// Print output [7, 3, 4, 1] 
Смежные вопросы