【问题标题】:2D array and creating a mirror of an image二维阵列和创建图像的镜像
【发布时间】:2016-04-17 01:57:15
【问题描述】:

我应该使用二维数组创建一个图像编辑器。对于这一部分,我应该创建代码,通过从左到右翻转来创建图像的镜像。相反,我将其颠倒过来。我做错了什么?

public void mirror() {
    // TODO Auto-generated method stub
    int[] img;
    int left = 0, right = data.length -1;
    while (right >= left) {
        img = data[left];
        data[left++] = data[right];
        data[right--] = img;
    }       
}

【问题讨论】:

  • 什么是数据,它的数据结构是什么?另外,您没有使用二维数组。
  • 这张图片是 ascii 艺术的吗?如果是这样,您需要一个多维数组,不是吗? X/Y 坐标如此二维?除非它是一维图像?

标签: java arrays multidimensional-array computer-science


【解决方案1】:

多个问题: 1.您正在使用一维数组。 2. 一维数组上的data.length 为您提供行数。 3. 现在,当您使用data.length 进行反转时,您最终会反转二维数组中的行而不是列。 因此,您的逻辑错误输出。

使用镜像方法应该是这样的——

public int[][] mirror(int[][] original) {
     int[][] mirror = original;
     for (int i=0; i<original.length; i++) {
         original[i] = reverseArray(original[i]);
     }
     return mirror;
}


public int[] reverseArray(int[] array) {
    for (i = 0; i < array.length / 2; i++) {
        int temp = array[i];
        array[i] = array[array.length - 1 - i];
        array[array.length - 1 - i] = temp;
    }
    return array;
}

【讨论】:

    【解决方案2】:

    问题是您只是在镜像组成矩阵的数组,而不是颠倒数组的顺序。假设 data 实际上是一个二维数组,这应该适合你。

    public void mirror() {
        for (int i = 0; i < data.length; i++){
            for (int j = 0; j < data[i].length/2; j++){
                int temp = data[i][j];
                data[i][j] = data[i][data[i].length-j-1];
                data[i][data[i].length-j-1] = temp;
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      我认为比其他答案更简单的方法:

      int[][] mirrored = new int[data.length][data[0].length];
      for (int i = 0; i < data.length; i++) {
          for (int j = 0; j < data[i].length; j++) {
              mirrored[i][data[i].length - j - 1] = data[i][j];
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-02
        • 1970-01-01
        • 2018-08-19
        • 2016-09-06
        • 2018-09-17
        相关资源
        最近更新 更多