Java 将数组值映射到另一个数组

Java 将数组值映射到另一个数组,java,arrays,mapping,Java,Arrays,Mapping,我有一个名为input的2d数组,我试图在另一个数组中映射不同的数字来更改它。在2d数组mapping中,它包含我要执行的所有映射。第一个数组是{0,2,3,4,1,5},我想用它来更改输入中的值,使每个1变为2,2变为3,3变为4,4变为1。我在映射数组中有23个不同的映射,我想更改input的值。以下是我到目前为止所做的尝试 public static int [][] mapOrientation(int input[][]){ int [][] input = {{0,0,0,

我有一个名为
input
的2d数组,我试图在另一个数组中映射不同的数字来更改它。在2d数组
mapping
中,它包含我要执行的所有映射。第一个数组是
{0,2,3,4,1,5}
,我想用它来更改
输入中的值,使每个1变为2,2变为3,3变为4,4变为1。我在映射数组中有23个不同的映射,我想更改
input
的值。以下是我到目前为止所做的尝试

 public static int [][] mapOrientation(int input[][]){
    int [][] input = {{0,0,0,5},{4,1,1,4},{2,2,0,2},{1,2,3,5},{3,3,3,4},{1,5,5,4}};

     int[][] mapping ={{0,2,3,4,1,5},{1,2,0,4,5,3},{5,2,1,4,3,0},{3,2,5,4,0,1},
                       {3,5,4,0,2,1},{2,5,3,0,1,4},{1,5,2,0,4,3},{4,5,1,0,3,2},
                       {4,1,0,3,5,2},{5,1,4,3,2,0},{2,1,5,3,0,4},{0,1,2,3,4,5},
                       {0,4,1,2,3,5},{3,4,0,2,5,1},{5,4,3,2,1,0},{1,4,5,2,0,3},
                       {1,0,4,5,2,3},{2,0,1,5,3,4},{3,0,2,5,4,1},{4,0,3,5,1,2},
                       {4,1,0,3,5,2},{5,1,4,3,2,0},{2,1,5,3,0,4}};

    int [] comb = mapping[0];
    for(int i = 0; i < input.length; i++){
        for(int j = 0; j < input[i].length; j++){

            input[i][j] = comb[0];
            System.out.println(comb[0]);
            System.out.println(Arrays.deepToString(input));

   cubeToString = Arrays.deepToString(input);

    return input;
}
致:


这将是我希望使用
comb[0]
得到的结果。您的问题在于这一行:

 input[i][j] = comb[0];
您正在将该值设置为始终等于映射的第一项。你真正想要的是

 input[i][j] = comb[input[i][j]];

可运行示例

public class NewClass
{
    public static void main(String... args)
    {
        int[][] input = {{5,1,2,0},{2,0,1,4},{1,2,5,5},{3,0,1,3},{4,3,0,4},{3,2,5,4}};
        mapOrientation(input);
    }

    public static int [][] mapOrientation(int input[][])
    {
        int[][] mappings ={{0,2,3,4,1,5},{1,2,0,4,5,3},{5,2,1,4,3,0},{3,2,5,4,0,1},
                           {3,5,4,0,2,1},{2,5,3,0,1,4},{1,5,2,0,4,3},{4,5,1,0,3,2},
                           {4,1,0,3,5,2},{5,1,4,3,2,0},{2,1,5,3,0,4},{0,1,2,3,4,5},
                           {0,4,1,2,3,5},{3,4,0,2,5,1},{5,4,3,2,1,0},{1,4,5,2,0,3},
                           {1,0,4,5,2,3},{2,0,1,5,3,4},{3,0,2,5,4,1},{4,0,3,5,1,2},
                           {4,1,0,3,5,2},{5,1,4,3,2,0},{2,1,5,3,0,4}};

        System.out.println("Before");
        System.out.println(Arrays.deepToString(input));

        int[] mapping = mappings[0];
        for(int i = 0; i < input.length; i++)
        {
            for(int j = 0; j < input[i].length; j++)
            {
                input[i][j] = mapping[input[i][j]];
            }
        }

        System.out.println("After");
        System.out.println(Arrays.deepToString(input));

        //cubeToString = Arrays.deepToString(input);

        return input;
    }
}
公共类NewClass
{
公共静态void main(字符串…参数)
{
int[]input={5,1,2,0},{2,0,1,4},{1,2,5,5},{3,0,1,3},{4,3,0,4},{3,2,5,4};
地图定向(输入);
}
公共静态int[][]映射方向(int输入[][])
{
int[][]映射={0,2,3,4,1,5},{1,2,0,4,5,3},{5,2,1,4,3,0},{3,2,5,4,0,1},
{3,5,4,0,2,1},{2,5,3,0,1,4},{1,5,2,0,4,3},{4,5,1,0,3,2},
{4,1,0,3,5,2},{5,1,4,3,2,0},{2,1,5,3,0,4},{0,1,2,3,4,5},
{0,4,1,2,3,5},{3,4,0,2,5,1},{5,4,3,2,1,0},{1,4,5,2,0,3},
{1,0,4,5,2,3},{2,0,1,5,3,4},{3,0,2,5,4,1},{4,0,3,5,1,2},
{4,1,0,3,5,2},{5,1,4,3,2,0},{2,1,5,3,0,4}};
系统输出打印项次(“之前”);
System.out.println(Arrays.deepToString(input));
int[]映射=映射[0];
for(int i=0;i
为什么映射数组比输入数组大?我很困惑。。。您想要的结果是否基于在输入上使用映射[0][0],并且结果将在梳[0]中?因为映射数组包含我想用来修改
输入的映射组合
,所以我使用
梳[0]
要访问第一个映射数组@RAZ_Muh_taz,您所说的映射数组包含映射的组合是什么意思?它是如何工作的?没有
0->0,1->2,2->3,3->4,4->1
是第一个组合@MichaelIs输入的数量等于映射的数量,或者您只想实现一个映射到所有输入?我也尝试过这样做,但它不会改变输入的值。我已经测试过,它符合您的预期结果。我已经为我的答案编辑了一个可运行的示例。
 input[i][j] = comb[input[i][j]];
public class NewClass
{
    public static void main(String... args)
    {
        int[][] input = {{5,1,2,0},{2,0,1,4},{1,2,5,5},{3,0,1,3},{4,3,0,4},{3,2,5,4}};
        mapOrientation(input);
    }

    public static int [][] mapOrientation(int input[][])
    {
        int[][] mappings ={{0,2,3,4,1,5},{1,2,0,4,5,3},{5,2,1,4,3,0},{3,2,5,4,0,1},
                           {3,5,4,0,2,1},{2,5,3,0,1,4},{1,5,2,0,4,3},{4,5,1,0,3,2},
                           {4,1,0,3,5,2},{5,1,4,3,2,0},{2,1,5,3,0,4},{0,1,2,3,4,5},
                           {0,4,1,2,3,5},{3,4,0,2,5,1},{5,4,3,2,1,0},{1,4,5,2,0,3},
                           {1,0,4,5,2,3},{2,0,1,5,3,4},{3,0,2,5,4,1},{4,0,3,5,1,2},
                           {4,1,0,3,5,2},{5,1,4,3,2,0},{2,1,5,3,0,4}};

        System.out.println("Before");
        System.out.println(Arrays.deepToString(input));

        int[] mapping = mappings[0];
        for(int i = 0; i < input.length; i++)
        {
            for(int j = 0; j < input[i].length; j++)
            {
                input[i][j] = mapping[input[i][j]];
            }
        }

        System.out.println("After");
        System.out.println(Arrays.deepToString(input));

        //cubeToString = Arrays.deepToString(input);

        return input;
    }
}