2013-06-05 29 views
2

對於我的類分配,我們需要編寫一個名爲Matrix的類,該類包含一個名爲'matrix'的私有2維int數組,最多可以有10行10列。我們需要使用兩個常量MAXROWS = 10和MAXCOLS = 10來構造「矩陣」。 Matrix類還需要以下屬性:BlueJ二維數組

private int rows; // number of rows to use in matrix 
    private int cols; // number of cols to use in matrix 

的行列數將包含小於等於MAXROWS和MAXCOLS值。 寫缺省矩陣類構造具有以下值構造「矩陣」數組:

{{1,2,4,5},{6,7,8,9},{10,11,12,13}, {14,15,16,17}} 

構造還必須設置行列數變量上述矩陣匹配。

編寫一個方法'getSumMatrix',它返回數組'矩陣'中所有整數的總和。

編寫一個方法'getSumMatrixDiag',它返回數組'矩陣'主對角線中所有整數的和。主要對角線是從矩陣的左上角到右下角形成的對角線。

是否有可能讓我的代碼看起來(我初始化數組並填充值以確保它是正確的)我卡在的部分是getSumMatrix和getSumMatrixDiag。getSumMatrix方法出錯行「for(i = 0; i < a.matrix; i ++)」,並告訴我「找不到符號 - 變量矩陣」,並以同樣的方式運行getSumMatrixDiag.Why是什麼?非常感謝。

這裏是我的代碼

/** 索菲亞·阿里

  1. Matrix,getSumMatrix,getSumMatrixDiag:

    電子郵件只是Matrix.java。

    編寫一個名爲Matrix的類,其中包含一個名爲'matrix'的私有2維int 數組,最多可以有10行10列。 使用兩個常量MAXROWS = 10和MAXCOLS = 10來構造'矩陣'。

    Matrix類還將需要以下屬性:

    private int rows; //在矩陣中使用的行數 private int cols; //矩陣中使用的列數

    行和列將包含小於等於 MAXROWS和MAXCOLS的值。

    寫缺省矩陣類構造構造 '矩陣' 陣列具有以下值:

    {{1,2,4,5},{6,7,8,9},{10 ,11,12,13},{14,15,16,17}}

    構造函數還必須設置行和列變量以匹配上述矩陣的 。

    編寫一個方法'getSumMatrix',它返回數組'矩陣'中所有整數 的總和。

    編寫一個方法'getSumMatrixDiag',該方法返回數組'矩陣'主對角線中所有整數 的總和。主要對角線是 矩陣的從左上角到右下角形成的對角線。

    您不必編寫TestMatrix類來測試Matrix類。 只需使用BlueJ對象創建和測試功能即可。

    */ 公共類矩陣 {

    final int MAXROWS = 10; 
    final int MAXCOLS = 10; 
    
    private int [][] matrix = new int [MAXROWS][MAXCOLS]; 
    
    private int rows; 
    private int cols; 
    
    
    public Matrix() 
    { 
    int matrix[][] = 
    { 
        {1, 2, 4, 5}, 
        {6, 7, 8, 9}, 
        {10, 11, 12, 13}, 
        {14, 15, 16, 17}}; 
        getSumMethod(matrix); 
        getSumMatrixDiag(matrix); 
        } 
    
    public double getSumMethod(int[][] a) 
    { 
        int i, result; 
        result = 0; 
        for(i=0; i < 10; i++) 
        { 
         result = result + i; 
        } 
        return result; 
    } 
    
    public double getSumMatrixDiag(int[][] m) 
    { 
        int sum = 0; 
    
        for (int i =0; i< m.length; i++) 
        { 
         sum = (int)(sum + m[i][i]); 
        } 
        return sum; 
        } 
    

    }

編輯:

我使用BlueJ的運行了一個程序,當我運行它,我得到的錯誤「錯誤不兼容的類型」。我不確定編碼是否錯誤(當我編譯它時,它編譯時沒有語法錯誤),或者我錯誤地使用了BlueJ。

+0

什麼是'a.matrix'? 'a'的類型爲int [] []',它沒有成員字段'matrix'。 – Patashu

+0

你的代碼中沒有可變矩陣,只有2個dim的數組,名稱爲'matrix' –

+0

嘗試堅持Java約定一個只有大寫字母的名稱常量(就像你在問題中所做的那樣):'MAXROWS'& 'MAXCOLS'。 –

回答

0

在你的代碼範圍內的矩陣變量就在構造函數裏面。所以它在getSumMethod中不可見。另外一個是上面指定的數組a.matrix是不正確的。

請嘗試以下操作。調用方法getSumMethod(矩陣)傳遞矩陣作爲參數,並用a替換a.matrix。然後看到你至少可以前進一些東西(可能是另一個錯誤)。如果你在下面嘗試,那麼你會錯誤的相關的數據類型,你可以通過正確的邏輯來解決。但是這個代碼需要很多改進才能按照你需要的方式行事。

final int maxrows = 10; 
    final int maxcols = 10; 

    private int [][] matrix = new int [maxrows][maxcols]; 

    private int rows; 
    private int cols; 


    public Base64Test() { 
     int matrix[][] = 
       {{1, 2, 4, 5}, 
       {6, 7, 8, 9}, 
       {10, 11, 12, 13}, 
       {14, 15, 16, 17}}; 
     getSumMethod(matrix); 
    } 

    public double getSumMethod(int[][] a) { 
     int i, result; 
     result = 0; 
     for(i=0; i < a.length; i++) { 
      result = result + a[i]; 
     } 
     return result; 
    } 
+0

當我更換公共雙重getSumMethod(int [] [] a){與公共雙getSumMethod(矩陣){我得到一個錯誤,說預計該行。 –

+0

索菲亞當你聲明方法時,它需要具有如下參數的數據類型:public double getSumMethod(int [] [] matrix)。以上語法無效。變量作爲參數命名並不重要。你可以保持它或矩陣。請更正代碼。 –

0

對不起,我不知道這是一個你現在wana,但這會幫助你。

public class Matrix{ 

    private int matrix[][] ;  

    public Matrix() 
    { 
     int[][] matrix = {{1, 2, 4, 5}, 
       {6, 7, 8, 9}, 
       {10, 11, 12, 13}, 
       {14, 15, 16, 17}}; 
     this.matrix=matrix; 
     int final_result=0; 
     for(int i=0;i<matrix.length;i++) 
     { 
      final_result+=getSumMethod(matrix[i]); 
     } 

     System.out.println("Final result is..."+final_result); 

    } 


    public int getSumMethod(int[] a) { 
     int i, result; 
     result = 0; 
     for(i=0; i < a.length; i++) { 
      result = result + a[i]; 
     } 
     return result; 
    } 
} 

...