Java. Почему изменяется переменная класса? Не могу понять, почему изменяется переменная класса, хотя в сортировке она не участвует вовсе.
Нужно объяснение именно на этом примере, т.к. переписать так, что бы работало я могу.package cesar
import java.io.PrintStream
import java.util.Scanner
public class Cesar
private static Scanner sc = new Scanner(System.in)
private static PrintStream pr = new PrintStream(System.out)
private static char[] alphabet
private static char[] revAlphabet
stati

alphabet = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ".toLowerCase().toCharArray()
revAlphabet = getReverseAlphabet()

public static void main(String[] args)


private static char[] getReverseAlphabet()
int step = 3
char[] rev = alphabet
for (char c : alphabet) //test

pr.print(c)

pr.println()
for (int i = 0; i < step; i++

for (int k = 0; k < rev.length-1; k++

char temp = rev[k]
rev[k] = rev[k+1]
rev[k+1] = temp


for (char c : alphabet) //test

pr.print(c)

return rev

}

21 Авг 2019 в 07:05
356 +1
0
Ответы
1

Проблема здесь заключается в том, что вы в методе getReverseAlphabet() работаете с переменной rev, которая ссылается на тот же массив, что и переменная alphabet, так как вы присвоили rev = alphabet. Это означает, что при изменении rev вы также изменяете alphabet, потому что обе переменные ссылаются на один и тот же объект в памяти.

Для того чтобы избежать этой проблемы, вам нужно создать отдельный массив для переменной rev, вместо того чтобы просто присваивать rev = alphabet. Вы можете сделать это, например, с помощью метода clone():

private static char[] getReverseAlphabet()
int step = 3
char[] rev = alphabet.clone()
// ваш код дальш
}

Таким образом, вы создадите копию массива alphabet и будете работать с отдельным массивом rev, не изменяя при этом значения оригинального массива alphabet.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 620 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир