[英]BlueJ 2d Dimensional Array
對於我的類分配,我們需要編寫一個名為Matrix的類,該類包含一個稱為'matrix'的私有二維int數組,最多可包含10行,10列。 我們需要使用兩個常量MAXROWS = 10和MAXCOLS = 10來構造“矩陣”。 Matrix類還將需要以下屬性:
private int rows; // number of rows to use in matrix
private int cols; // number of cols to use in matrix
行和列將包含小於等於MAXROWS和MAXCOLS的值。 編寫一個默認的Matrix類構造函數,該構造函數使用以下值構造“矩陣”數組:
{{1,2,4,5},{6,7,8,9},{10,11,12,13}, {14,15,16,17}}
構造函數還必須設置row和cols變量以匹配上述矩陣。
編寫一個方法“ getSumMatrix”,該方法返回數組“ matrix”中所有整數的和。
編寫一個方法“ getSumMatrixDiag”,該方法返回數組“ matrix”的主對角線上所有整數的和。 主對角線是從矩陣的左上角到右下角形成的對角線。
是否可以檢查我的代碼(在哪里初始化數組並用值填充它以確保它正確。我被卡住的部分是getSumMatrix和getSumMatrixDiag。getSumMatrix方法錯誤在“ for( i = 0; i <a.matrix; i ++)”,並告訴我“找不到符號-可變矩陣”。getSumMatrixDiag會是一樣的方式。為什么?謝謝你。
這是我的代碼
/ **索菲亞·阿里(Sophia Ali)
矩陣,getSumMatrix,getSumMatrixDiag:
僅通過Matrix.java發送電子郵件。
編寫一個名為Matrix的類,其中包含一個稱為“矩陣”的私有二維int數組,該數組最多可以包含10行乘以10列。 使用兩個常量MAXROWS = 10和MAXCOLS = 10構造“矩陣”。
Matrix類還將需要以下屬性:
私有int行; //矩陣專用int col中要使用的行數; //在矩陣中使用的列數
行和列將包含小於等於MAXROWS和MAXCOLS的值。
編寫一個默認的Matrix類構造函數,該構造函數使用以下值構造“矩陣”數組:
{{1,2,4,5},{6,7,8,9},{10,11,12,13},{14,15,16,17}}
構造函數還必須設置row和cols變量以匹配上述矩陣。
編寫一個方法“ getSumMatrix”,該方法返回數組“ matrix”中所有整數的和。
編寫一個方法“ getSumMatrixDiag”,該方法返回數組“ matrix”的主對角線上所有整數的和。 主對角線是從矩陣的左上角到右下角形成的對角線。
您不必編寫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。
在您的代碼范圍內,矩陣變量就在構造函數內部。 因此它在getSumMethod中不可見。 另外a是上面指定的數組a.matrix是不正確的。
請嘗試以下。 調用方法getSumMethod(matrix),將矩陣作為參數傳遞,並將a.matrix替換為a。 然后,您至少可以前進一些(可能是另一個錯誤)。 如果嘗試以下操作,則將出現與數據類型有關的錯誤,可以通過放置正確的邏輯來解決這些數據類型。 但是,此代碼需要進行大量改進才能按照您的要求進行操作。
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;
}
抱歉,我不知道這是您現在想要的那個,但這會為您提供幫助。
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;
}
}
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.