2017-02-06 91 views
1

這是方法,這是我建這就是一個簡單的方法:我建立這似乎不工作

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

現在,我試圖把它用在這是應該 做出消極的下一個方法2維數組的圖片。這就是 意味着如果Matrix[0][0] = int 0它將它切換到 或1> 2542> 253等等...

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;} 

所以,第一個問題是,爲何我不能用我的方法嗎? 的Java bluejay建議:

canot找到符號 - 方法相反(INT)

第二個問題是,我出於某種原因想,也許如果我的代碼不會以這種方式工作,也許我應該嘗試做一個方法。 所以我也試圖做一個方法,將我帶到矩陣內的特定框內的int。 所以我想如果有人能告訴我如何做到這一點。

非常感謝任何能夠幫助我的人,對我的英語和編程能力感到非常抱歉。

編輯被要求在這裏把整個類代碼:

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

,然後你:

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;  
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

矩陣類中的方法'opposite()'是什麼? –

+0

是的是的:PP –

+1

是'對面()'''公共''矩陣'的成員?你清楚的錯誤表明'opposite()'要麼不存在,要麼是有作用域的,不能被訪問。 – px06

回答

3

您已經在makeNegative()方法聲明negative類型矩陣二維數組正試圖調用negative.opposite(num);這是無效的。

opposite是Matrix類上的靜態方法,而不是類型爲Matrix的二維數組。只需在您的通話中刪除negative.即可使用!

只要保持:

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

更新

這將造成很大的混亂:

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

您已經聲明整數矩陣。另外你在你的makeNagative()方法中定義了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 

希望這有助於!

+0

我試過我的方法現在看起來像這樣公共矩陣makeNegative(){ int num; Matrix [] [] negative = new Matrix [Matrix.length] [Matrix [0] .length]; (int j = 0; j

+0

我也看到了。在答案中查看我的更新。您需要進行一些更改。 – anacron

+0

我在回答中添加了您的代碼的修改版本。看一看。 – anacron