2014-10-03 5 views
0

Как поменять местами два значения массива, учитывая массив целых чисел и два целочисленных значения?Изменение значений элементов массива

Код я использовал

public class Q1K { 
    void swapElements(int[] array, int index1, int index2){ 
     int index3= array[index1]; 
     array[index1]=array[index2]; 
     array[index2]= array[index3]; 
    } 
} 

Извините, если мой вопрос отсутствует информация/трудно понять

+0

обеспечивая ваш ввод и ожидаемый результат помогут получить четкое представление. –

+0

Ваш вопрос непонятен. Можете ли вы сказать, что вы ожидаете? –

ответ

2

Должно быть,

int temp = array[index1]; // its not a index, its a value at a particular index. 
array[index1]=array[index2]; 
array[index2]= temp; 

соглашение об именах вы использовали тихо запутанным index3, на самом деле это должна быть временная переменная, используемая для swapping.

1

Ваш ответ очень близок. Посмотрите на это решение ...

public class Q1K { 
    void swapElements(int[] array, int index1, int index2){ 
     int val = array[index1]; 
     array[index1] = array[index2]; 
     array[index2] = val; 
    } 
} 
2

array[index3]; возвращает значение из массива снова. поэтому вам нужно записать его как index3.

Назовите свои переменные мудро, чтобы избежать путаницы, Также помните, что значения внутри фигурных скобок значения всегда обозначают.

Learn More на замену массивов.

3

Вы уже поняли, что вам понадобится временная переменная для выполнения базовой свопинга в Java. Но именование переменной (index3 в вашем случае) предполагает, что вы смешиваете вещи; цель состоит в том, чтобы временно не хранить индекс вашего массива, но значение , которое представлено этим индексом, в противном случае оно будет перезаписано (и таким образом потеряно). То, что вы хотите сделать в «шаге 3» свопа, - это восстановить временное значение, а не значение индекса.

Итак:

void swapElements(int[] array, int index1, int index2){ 
     int tempValue = array[index1]; 
     array[index1] = array[index2]; 
     array[index2] = tempValue; 
} 
1
public class Q1K { 
    void swapElements(int[] array, int index1, int index2){ 
     int index3= array[index1]; 
     array[index1]=array[index2]; 
     array[index2]= index3; 
    } 
} 

Убедитесь, что вы называете ваши переменные таким образом, что они имеют смысл при чтении кода. От вашего кода, index3 звучит как индекс массива, но в контексте кода это на самом деле нет :)

0

Существует еще один способ, который не нужно использовать временную переменную:

void swapElements(int[] array, int ix1, int ix2){ 
    array[ix1] = array[ix1] + array[ix2]; 
    array[ix2] = array[ix1] - array[ix2]; 
    array[ix1] = array[ix1] - array[ix2]; 
} 
Смежные вопросы