这是我建立的方法:
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;}
答案 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
希望这有帮助!