Я пытаюсь написать метод в Java, который позволит мне поменять местами 2d-массив типа double. Мой код отлично работает, когда я использую его для двумерного массива целых, но он не работает при применении к double. Я пропускаю что-то фундаментальное в двойных типах данных? Любое понимание очень ценится.
// swapRows
// double[][] Integer -> double[][]
public static double[][] swapRows(double[][] a, int i)
{
double[] temp = a[i];
for(; i < a.length - 1; i++)
a[i] = a[i+1];
a[a.length - 1] = temp;
return a;
}
// версия 2 с новым 2d массивом
public static double[][] swapRows(double[][] a, int i)
{
double[][] b = new double[a.length][a[0].length];
double[] temp = a[i];
for(int k = 0; k < i;k++)
b[k] = a[k];
for(; i < a.length - 1; i++)
b[i] = a[i+1];
b[b.length - 1] = temp;
return b;
}
// обратите внимание, что строки не просто меняются местами, указанная строка i отправляется в конец массива, а каждая вторая строка сдвигается вверх
// для 2d массива:
{ {3, 5, 6},
{2, 1, 1},
{9, 0, 4} }
// Я ожидаю, что когда i = 0, метод вернет 2d массив:
{ {2, 1, 1},
{9, 0, 4},
{3, 5, 6} }
// но вместо этого я получаю:
{ {0.0, -29.999996, -38.571428},
{18.999997, 0.0, 0.999999},
{18.0, 29.999996, 36.0} }
// когда я использую int вместо double, я получаю ожидаемый массив