for(inti=0; i < validData.length; i++) { inttemp= validData[i]; validData[i] = validData[validData.length - i - 1]; validData[validData.length - i - 1] = temp; }
Что с ним не так?
Переведено автоматически
Ответ 1
Чтобы обратить вспять массив int, вы меняете местами элементы, пока не достигнете средней точки, вот так:
for(inti=0; i < validData.length / 2; i++) { inttemp= validData[i]; validData[i] = validData[validData.length - i - 1]; validData[validData.length - i - 1] = temp; }
То, как вы это делаете, вы меняете местами каждый элемент дважды, так что результат будет таким же, как в исходном списке.
Ответ 2
С помощью Commons.Lang вы могли бы просто использовать
ArrayUtils.reverse(int[] array)
В большинстве случаев быстрее и безопаснее от ошибок использовать легкодоступные библиотеки, которые уже прошли модульное тестирование и протестированы пользователями, когда они решают вашу проблему.
Ответ 3
Collections.reverse(Arrays.asList(yourArray));
java.util.Collections.reverse() может инвертировать java.util.Lists и java.util.Arrays.asList() возвращает список, который оборачивает конкретный массив, который вы ему передаете, следовательно, yourArray инвертируется после вызова Collections.reverse().
Стоимость составляет всего лишь создание одного объекта List и никаких дополнительных библиотек не требуется.
Аналогичное решение было представлено в ответе Тарика и их комментаторов, но я думаю, что этот ответ был бы более кратким и более легко анализируемым.