2

私のクラス割り当てでは、最大 10 行 x 10 列までの「matrix」というプライベート 2 次元 int 配列を含む Matrix というクラスを作成する必要があります。「行列」を作成するには、MAXROWS=10 と MAXCOLS=10 の 2 つの定数を使用する必要があります。Matrix クラスには、次の属性も必要です。

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

行と列には、MAXROWS と MAXCOLS 以下の値が含まれます。次の値で「matrix」配列を構築するデフォルトの Matrix クラス コンストラクターを記述します。

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

コンストラクターは、上記のマトリックスと一致するように、rows 変数と cols 変数も設定する必要があります。

配列「matrix」内のすべての整数の合計を返すメソッド「getSumMatrix」を記述します。

配列「matrix」の長対角のすべての整数の合計を返すメソッド「getSumMatrixDiag」を記述します。主対角線は、行列の左上隅から右下隅に形成される対角線です。

私のコードを調べてもらうことは可能でしょうか(ここで、配列を初期化し、値を入力して正しいことを確認します。私が行き詰まっている部分は、getSumMatrix と getSumMatrixDiag です。getSumMatrix メソッドは、行 "for( i=0; i < a.matrix; i++)" と表示され、" シンボルが見つかりません - 変数行列" と表示されます。

これが私のコードです

/** ソフィア・アリ

  1. マトリックス、getSumMatrix、getSumMatrixDiag:

    Matrix.java だけを電子メールで送信してください。

    最大 10 行 x 10 列までの「matrix」というプライベート 2 次元 int 配列を含む Matrix というクラスを作成します。MAXROWS=10 と MAXCOLS=10 の 2 つの定数を使用して、「行列」を作成します。

    Matrix クラスには、次の属性も必要です。

    プライベート int 行。// 行列で使用する行数 private int cols; // マトリックスで使用する列の数

    行と列には、MAXROWS と MAXCOLS 以下の値が含まれます。

    次の値で「matrix」配列を構築するデフォルトの Matrix クラス コンストラクターを記述します。

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

    コンストラクターは、上記のマトリックスと一致するように、rows 変数と cols 変数も設定する必要があります。

    配列「matrix」内のすべての整数の合計を返すメソッド「getSumMatrix」を記述します。

    配列「matrix」の長対角のすべての整数の合計を返すメソッド「getSumMatrixDiag」を記述します。主対角線は、行列の左上隅から右下隅に形成される対角線です。

    Matrix クラスをテストするために TestMatrix クラスを記述する必要はありません。BlueJ オブジェクトの作成とテスト機能を使用するだけです。

    */ public class Matrix {

    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 を使用してプログラムを実行していますが、実行すると「Error incompatible types」というエラーが表示されます。コーディングが間違っているのか (コンパイルすると、構文エラーなしでコンパイルされる)、それとも BlueJ の使い方が間違っているのかわかりません。

4

2 に答える 2

0

申し訳ありませんが、これがあなたが今望んでいるものかどうかはわかりませんが、これはあなたを助けるでしょう.

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

...

于 2013-06-05T05:15:00.157 に答える
0

あなたのコードでは、マトリックス変数のスコープはコンストラクターのすぐ内側にあります。したがって、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;
     }
于 2013-06-05T04:21:31.080 に答える