试图按特定顺序将1D阵列放入2D阵列

时间:2017-11-21 10:27:47

标签: java arrays

我需要编写一个接收1D数组的函数 例如:[2,5,3] 我需要创建以下2D数组: [[2,-5,-3] [ - 2,5,-3] [ - 2,-5,3]

我的代码是:

    for (int i=0; i<vars.length; i++){

        for (int j=0; j<vars.length; j++)
            tempVars[j] = vars[j]*(-1);

        tempVars[i] = tempVars[i]*(-1);
        solution[i] = tempVars;

    }

    return solution ;
} // end of atMostOne function

但是我得到的输出是:[[ - 2,-5,3],[ - 2,-5, - 3],[ - 2,-5,3]] 该函数仅将最后一维数组放入所有二维阵列单元格中 我做错了什么?

3 个答案:

答案 0 :(得分:0)

import java.util.*;
import java.lang.*;
import java.io.*;


class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
    int n=4;
    int a[]=new int[n];
    a[0]=2;
    a[1]=5;
    a[2]=3;
    a[3]=6;

    int a1[][]=process(a);

    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            System.out.print(a1[i][j]+" ");
        System.out.println();   
    }

    }


    public static int[][] process(int[] a)
    {
        int x=a.length;
        int a1[][]=new int[x][x];
        int i=0;

        for(int b=0;b<x;b++)
        {
            for(int c=0;c<x;c++)
            {
                if(c==i)
                    a1[b][c]=a[c];
                else
                    a1[b][c]=-1*a[c];
            }
            i++;
        }

        return a1;

    }
}

以下是您想要的工作演示。我创建了一个函数,它接受一维数组并根据您的要求返回一个二维数组。

答案 1 :(得分:0)

@OH GOD SPIDERS是对的。 tempVars数组被添加到solutions的倍数,因此solutions填充了对同一数组的3个引用。

使用:

    for (int i=0; i<vars.length; i++){
        for (int j=0; j<vars.length; j++) {
            tempVars[j] = vars[j]*(-1);
        }


        tempVars[i] = tempVars[i]*(-1);
        solution[i] = tempVars.clone();

    }

clone()中的solution[i] = tempVars.clone();将确保将tempVars克隆的新数组放入solution

答案 2 :(得分:0)

    var data = [2,3,5];
    var counter = data.length;
    var finalArr=[];
    for (var i = 0; i < counter; i++) {
      var tmpArr = [];
      for (var j = 0; j < data.length; j++) {
          if(i==j){
            tmpArr.push(-data[j]);
          }
          else{
          tmpArr.push(data[j]);
          }
       }
       finalArr.push(tmpArr);
    }
    console.log(finalArr)