我构建了一个似乎不起作用的简单方法

时间:2017-02-06 11:29:41

标签: java arrays multidimensional-array

这是我建立的方法:

    view v = LayoutInflater.from...
    v.setOnClickListener(
new MyOnClickListener() //pass here the event to click handler);

现在,我正试图在下一个假定的方法上使用它 制作二维数组的负面图片。 这意味着如果public void onClick(View v) { int itemPosition = recyclerView.indexOfChild(v); //do your api request } 它会将其切换为 255 1> 254 2> 253 等等......

public static int opposite(int num){
   if(num >= 0 && num <= 255)
       num = Math.abs(num - 255);
          return num;}

那么,第一个问题是为什么我不能使用我的方法? java bluejay建议:

  

canot find symbol - 方法对面(int)

第二个问题是,我出于某种原因想到,如果我的代码不能以这种方式工作,也许我会尝试制作一个方法。 所以我也试图制作一个方法,它将Matrix[0][0] = int 0带入Matrix内的特定框内。 所以我想如果有人能告诉我这是怎么做的。

感谢任何可以提供帮助的人,为我糟糕的英语和编程技巧道歉。

要求编辑将整个班级代码放在这里:

public Matrix makeNegative(){
    int num;    
    Matrix[][] negative = new Matrix[Matrix.length][Matrix[0].length];
    for(int i = 0; i < negative.length; i++){
        for(int j = 0; j < negative[0].length;j++){
            negative[i][j] =  negative.opposite(num);}}
              return negative;}

1 个答案:

答案 0 :(得分:3)

您已在negative方法中将makeNegative()声明为Matrix类型的二维数组:

Matrix[][] negative = new Matrix[Matrix.length][Matrix[0].length];

然后您尝试调用无效的negative.opposite(num);

opposite是Matrix类上的静态方法,不是Matrix类型的二维数组。只需在通话中删除negative.,即可使用!

请保持:

negative[i][j] = opposite(num);
  

<强>更新

这会引起很多困惑:

public class Matrix{
    private int[][] Matrix;

您已声明了整数矩阵。另外,您在makeNagative()方法中定义了Matrix [] []。您的Matrix类已包含整数矩阵。您可能不需要Matrix矩阵!

我已尽可能以最佳方式更改了您的makeNegative()方法。看看:

public Matrix makeNegative() {
    int num;
    int[][] negative = new int[Matrix.length][Matrix[0].length];
    for (int i = 0; i < Matrix.length; i++) {
        for (int j = 0; j < Matrix[i].length; j++) {
            num = Matrix[i][j];
            negative[i][j] = opposite(num);
        }
    }
    return new Matrix(negative);
}
  

更新2

我使用添加的main方法发布整个代码。看起来这个有用:

public class Matrix {
    private int[][] Matrix;

    /**
     * builder that copys an array of 2 dimensions
     * 
     * @param gets
     *            and int[][] array
     */
    public Matrix(int[][] array) {
        Matrix = new int[array.length][array[0].length];
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[0].length; j++) {
                Matrix[i][j] = array[i][j];
            }
        }
    }

    /**
     * builder that builds an array of 2 dimensions with the sizes given
     * 
     * @param size1
     *            = rows size2 = column
     */
    public Matrix(int size1, int size2) {
        Matrix = new int[size1][size2];
    }

    public String toString() {
        String result = "";
        for (int i = 0; i < Matrix.length; i++) {
            for (int j = 0; j < Matrix[0].length; j++) {
                result += Matrix[i][j];
                if (j != Matrix[0].length - 1) {
                    result += "\t";
                }
            }
            result += "\n";
        }
        return result;
    }

    public static int opposite(int num) {
        if (num >= 0 && num <= 255)
            num = Math.abs(num - 255);
        return num;
    }

    /*
     * public int getColor(Matrix array){ int color; color = }
     */
    public Matrix makeNegative() {
        int num;
        int[][] negative = new int[Matrix.length][Matrix[0].length];
        for (int i = 0; i < Matrix.length; i++) {
            for (int j = 0; j < Matrix[i].length; j++) {
                num = Matrix[i][j];
                negative[i][j] = opposite(num);
            }
        }
        return new Matrix(negative);
    }

    public static void main(String[] args) {
        Matrix m = new Matrix(new int[][]{
            {1,2,3},
            {4,5,6},
            {7,8,9}
        });
        Matrix negM = m.makeNegative();
        System.out.println("Original Matrix");
        System.out.println(m);
        System.out.println("Negative Matrix");
        System.out.println(negM);
    }

}

输出如下:

Original Matrix
1   2   3
4   5   6
7   8   9

Negative Matrix
254 253 252
251 250 249
248 247 246

希望这有帮助!