Уважаемые товарищи, у меня просто ужас, а не ситуация. Не могу понять битый час в чём проблема, больше напоминает проблемы с софтом и/или компьютером. Собственно код с пояснениями:
public class NewClass {
public static void crossover(double[] A, double[] B, double[] AB, double[] BA) {
/*
* Некий код "генетической" замены без уймы ненужного.
* Задача такая: выбираются две точки (индексы) pointA и pointB,
* между которыми все значения из массива A идут в массив BA,
* а значения B в AB.
* В итоге значения A и B не должны меняться
*/
int len = A.length;
//Присваиваю некоторые такие значения, при которых начинается магия
int pointA = 3;
int pointB = 5;
boolean inOrOut = false;
if ((pointB - pointA) >= ((len - pointB) + pointA - 1)) {
inOrOut = true;
}
for (int i = 0; i < len; i++) {
boolean iBetweenPoints = (i >= pointA && i <= pointB);
if (!inOrOut && !iBetweenPoints) {
/*
Вот тут суть магии:
Начинают меняться значения массива A,
Что я никак объяснить не могу;
Более того при добавлении строк со **
код перестаёт всячески выполнять предназначение
*/
//double te = A[i]; **
AB[i] = B[i];
//A[i] = te; **
BA[i] = A[i];
}
}
}
public static void main(String[] args) {
//Случайный пример
double[] a = {0, 7, 2, 4, 9, 0, 1};
double[] b = {1, 3, 9, 2, 0, 4, 0};
double[] ab = a;
double[] ba = b;
crossover(a, b, ab, ba);
for (int i = 0; i < ab.length; i++) {
System.out.print(ab[i] + " ");
}
System.out.println();
for (int i = 0; i < ab.length; i++) {
System.out.print(ba[i] + " ");
}
/*
На выходе:
1.0 3.0 9.0 4.0 9.0 0.0 0.0
1.0 3.0 9.0 2.0 0.0 4.0 0.0
Надо:
1.0 3.0 9.0 4.0 9.0 0.0 0.0
0.0 7.0 2.0 2.0 0.0 4.0 1.0
*/
}
}
Вся суть вашей магии умещается в 4-х строчках:
double[] a;
double[] b;
double[] ab = a; //ab[] это не копия a[]!
double[] ba = b;
то есть действия которые в производите с ab[]
идентичны действиям, которые вы производите с a[]
(аналогично и с ba[] и b[]
)
double[] ab = a;
double[] ba = b;
Мне кажется что Вы подразумеваете, что здесь будут созданы новые массивы. А на самом деле это указатели на те же самые массивы.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пытаюсь сделать это следующим образом:
Скачал package "Script" для Atom, но при запуске Java кода в консоли выдает это: https://prntsc/gtyl2i Подскажите, как исправить?
Как правильно перенести значения от 1 до 8 с массива A в массив С через массив B? Переносить по одному значению так, чтобы минимальное значение...