Как поменять местами элементы массива в java
Чтобы поменять местами два элемента массива в Java, нужно будет воспользоваться временной промежуточной переменной. Для примера создадим массив строк из трёх элементов:
String[] animals = "cats", "dogs", "birds">;
Поменяем местами первый и последний элемент массива:
// Создаём промежуточную переменную и записываем туда первый элемент массива String temp = animals[0]; // Меняем местами значения animals[0] = animals[2]; // Значение первого элемента берем из промежуточной переменной animals[2] = temp; System.out.println(Arrays.toString(animals)); // => ["birds", "dogs", "cats"]
В массиве поменять местами максимальный элемент на минимальный
Товарищи подскажите пожалуйста, не пойму в чем проблема, вроде все правильно сделал
выдает ошибку компиляции.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
import java.util.Scanner; public class sortChoice { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("Enter size massive - "); //Выводим на экран int N = in.nextInt(); //Вводим размер массива int[] mass = new int[N]; //создаем массив размером N for (int i = 0; i N; i++) { //создаем цикл System.out.print("Enter number in massive - "); //Выводим на экран int a = in.nextInt(); //Вводим число в массив mass[i] = a; //добавляем число в массив } int max = mass[0]; //предположим что 1эл.масс. максимальный эл.масс. int min = mass[0]; //предположим что 1эл.масс. минимальный эл.масс. for (int i = 1; i mass.length; i++) { //создаем цикл if (mass[i] > max) { //если mass[i] больше переменной max, то max = mass[i]; //переменная max принимает значение mass[i] } if (mass[i] min) { //если mass[i] меньше переменной min, то min = mass[i]; //переменная min принимает значение mass[i] } } System.out.println("max element massive = " + max); //Выводим на экран System.out.println("min element massive = " + min); //Выводим на экран int temp = mass[max]; mass[max] = mass[min]; mass[min] = temp; for (int i = 0; i mass.length; i++) { System.out.println(mass[i]); } } }
Exception in thread «main» java.lang.ArrayIndexOutOfBoundsException: 5
at sortChoice.main(sortChoice.java:30)
Выдает вот такую ошибку.Не пойму в чем проблема?
Что значит Индекс массива вне границ исключение: 5 ?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

В массиве целых чисел поменять местами максимальный отрицательный элемент и минимальный положительный
В массиве целых чисел поменять местами максимальный отрицательный элемент и минимальный.
Поменять местами максимальный и минимальный элемент одномерного массива
Написать подпрограмму которая меняет местами максимальный и минимальный элемент одновимирного.

Необходимо поменять местами максимальный и минимальный элемент массива
Существует массив из целых чисел A (n), где n = 25. Необходимо поменять местами его максимальный и.
![]()
3638 / 2970 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
Это значит, что ты вышел за пределы массива. Например, массив размером 4 элемента, а ты просишь 5
30 / 21 / 11
Регистрация: 09.11.2010
Сообщений: 240
COMEDY4445,
Добавь переменные, куда будешь записывать индексы нужных элементов.
int indexMax = 0, indexMin = 0;
Ну а потом так:
mass[indexMin] = max; mass[indexMax] = min;
Регистрация: 10.09.2020
Сообщений: 79
Сообщение от Spotter 
Добавь переменные, куда будешь записывать индексы нужных элементов.
Что-то я не пойму вас. у меня же есть переменные для хранения
int max = mass[0]; //предположим что 1эл.масс. максимальный эл.масс. int min = mass[0]; //предположим что 1эл.масс. минимальный эл.масс.
Можно вас попросить что бы вы написали мой код исправлен, что-то до меня не доходит..
![]()
3638 / 2970 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
Сообщение от COMEDY4445 
mass[max] = mass[min];
mass[min] = temp;
в minи max у тебя сами элементы лежат, а не индексы, ядрен батон
30 / 21 / 11
Регистрация: 09.11.2010
Сообщений: 240
COMEDY4445,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
import java.util.Scanner; public class sortChoice { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("Enter size massive - "); //Выводим на экран int N = in.nextInt(); //Вводим размер массива int[] mass = new int[N]; //создаем массив размером N for (int i = 0; i N; i++) { //создаем цикл System.out.print("Enter number in massive - "); //Выводим на экран mass[i] = in.nextInt(); //Вводим число в массив } int max = mass[0]; //предположим что 1эл.масс. максимальный эл.масс. int min = mass[0]; //предположим что 1эл.масс. минимальный эл.масс. int indexMax = 0, indexMin = 0; //переменные для хранения индексов нужных элементов for (int i = 0; i mass.length; i++) { //создаем цикл if (mass[i] > max) { //если mass[i] больше переменной max, то max = mass[i]; //переменная max принимает значение mass[i] indexMax = i; //присваиваем индекс макс. элемента } else if (mass[i] min) { //если mass[i] меньше переменной min, то min = mass[i]; //переменная min принимает значение mass[i] indexMin = i; //присваиваем индекс мин. элемента } } System.out.println("max element massive = " + max); //Выводим на экран System.out.println("min element massive = " + min); //Выводим на экран mass[indexMin] = max; //по индексу мин. элемента присваиваем значение макс. элемента mass[indexMax] = min; //по индексу макс. элемента присваиваем значение мин. элемента for (int value : mass) { System.out.print(value + " "); } } }
Java Поменять местами элементы массива
Помогите поменять местами max и min значение массива. Сами значения нашёл, местами поменял, а как это в массиве непосредственно сделать. Подозреваю, что нужны индексы для этого, но как? мой код:
int[] arr = new int[] ; int max = arr[0]; int min = arr[0]; int maxInd = 0; int minInd = 0; for (int i = 0; i < arr.length; i++) < max = Math.max(max, arr[i]); min = Math.min(min, arr[i]); >int temp = min; min = max; max = temp; System.out.println(min); System.out.println(max); >
Отслеживать
задан 15 янв 2021 в 2:23
113 2 2 серебряных знака 9 9 бронзовых знаков
вам надо найти не сами занчения max и min, а их индексы в массиве. Имея индексы, можно легко поменять элементы местами.
15 янв 2021 в 2:48
В том-то и вопрос. Просто без значения элемента номер индекса не имеет смысла. Нет?
15 янв 2021 в 3:05
Если у вас есть номер индекса, то у вас уже есть значение, так как по номеру индекса всегда это значение можно получить.
15 янв 2021 в 4:08
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Да, для перестановки элементов массива, помимо того что запоминать значение максимального элемента, необходимо также запоминать его индекс (позицию в массиве), причем переменные индексов у вас уже заведены, поэтому остается только реализовать код, например так:
int[] arr = new int[]; int max = arr[0]; int min = arr[0]; int maxInd = 0; int minInd = 0; for (int i = 0; i < arr.length; i++) < if (max >arr[i]) < // сравниваем maxInd = i; // запоминаем индекс max = arr[i]; // запоминаем значение >if (min < arr[i]) < // сравниваем minInd = i; // запоминаем индекс min = arr[i]; // запоминаем значение >> // переставляем элементы int temp = arr[minInd]; arr[minInd] = arr[maxInd]; arr[maxInd] = temp; Arrays.stream(arr).forEach(e-> System.out.println(e)); // вывод массива
Отслеживать
ответ дан 15 янв 2021 в 3:40
678 3 3 серебряных знака 10 10 бронзовых знаков
Запоминать значение не обязательно, если вы запомнили индекс.
15 янв 2021 в 4:07
- java
- for
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Меняем местами элементы массива с помощью стека в Java
Стек представляет собой абстрактный тип данных (ADT), обычно используется в большинстве языков программирования. Он называется стеком, так как он ведет себя как реальный стек, например, колода карт и т. д.
В стеке первый элемент входит и выходит, есть две основные операции: push и pop. Push вставляет в него данные, а pop извлекает данные.
Чтобы инвертировать массив с помощью стека, сначала поместите все элементы в стек, используя метод push(), затем извлеките их обратно с помощью метода pop() в другой массив, таким образом поменяв местами элементы массива.
Пример
import java.util.Arrays; import java.util.Stack; public class ReversinArrayUsingStack < public static void main(String args[]) < Stackstack = new Stack(); int[] myArray = ; int size = myArray.length; for(int i=0; i int[] reverseArray = new int[size]; for(int i=0; i System.out.println("Reversed array is ::"+Arrays.toString(reverseArray)); > >
Итог
Reversed array is ::[39, 92, 56, 93, 23]
Средняя оценка 0 / 5. Количество голосов: 0
Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.
Или поделись статьей
Видим, что вы не нашли ответ на свой вопрос.
Помогите улучшить статью.
Напишите комментарий, что можно добавить к статье, какой информации не хватает.