2013-06-05 2 views
2

Для моего назначения класса нам нужно написать класс Matrix, который содержит частный 2-мерный массив int, называемый «матрицей», который может содержать до 10 строк на 10 столбцов. Нам нужно использовать две константы MAXROWS = 10 и MAXCOLS = 10 для построения «матрицы». Класс Matrix также понадобятся следующие атрибуты:BlueJ 2d Dimensional Array

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', который возвращает сумму всех целых чисел в основной диагонали матрицы 'matrix'. Основной диагональю является диагональ, сформированная из верхнего левого угла в нижний правый угол матрицы .

Возможно ли, чтобы мой код просматривался (где я инициализирую массив и заполняю его значениями, чтобы убедиться, что это правильно. Часть, на которую я застрял, - это getSumMatrix и getSumMatrixDiag. Метод getSumMatrix устраняет ошибки на line "for (i = 0; i < a.matrix; i ++)" и говорит мне: «Невозможно найти символ - переменную матрицу». Как и в случае с getSumMatrixDiag, это будет так же. Почему так много.

Вот мой код

/** София Али

  1. Матрица, getSumMatrix, getSumMatrixDiag:

    Email просто Matrix.java.

    Напишите класс Matrix, который содержит частный двумерный массив int , называемый «матрицей», который может содержать до 10 строк на 10 столбцов. Используйте две константы MAXROWS = 10 и MAXCOLS = 10 для построения «матрицы».

    Класс Matrix также понадобятся следующие атрибуты:

    частные ИНТ строки; // количество строк для использования в матрице private int cols; // количество колод, используемых в матрице

    Строки и столбцы будут содержать значения, которые меньше, чем MAXROWS и MAXCOLS.

    Написать конструктор класса матрицы, по умолчанию, который конструирует 'матрицу' массива со следующими значениями:

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

    Конструктор также должен устанавливать переменные строк и столбцов в соответствии с матрицей .

    Напишите метод 'getSumMatrix', который возвращает сумму всех целых чисел в матричной матрице.

    Напишите метод 'getSumMatrixDiag', который возвращает сумму всех целых чисел в основной диагонали матрицы 'matrix'. Основной диагональю является диагональ, сформированная из верхнего левого угла в правый нижний угол .

    Вам не нужно писать класс TestMatrix для проверки класса Matrix. Просто используйте функцию создания и тестирования объектов BlueJ.

    */ общественного класса 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; 
        } 
    

    }

EDIT:

Я использую BlueJ, чтобы запустить свою программу, и когда я запускаю его я получаю сообщение об ошибке Msgstr "Ошибка несовместимых типов". Я не уверен, что мое кодирование неверно (когда я его компилирую, он компилируется без синтаксических ошибок) или если я неправильно использую BlueJ.

+0

Что такое 'a.matrix'? 'a' имеет тип' int [] [] ', который не имеет поля-члена' matrix'. – Patashu

+0

в ваших кодах нет переменной матрицы, существует только массив из двух тусклых с именем «матрица». –

+0

Постарайтесь придерживаться условных обозначений Java с константами имени с прописными буквами (например, вы делаете в вопросе): 'MAXROWS' & 'MAXCOLS'. –

ответ

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

Когда я заменяю public double getSumMethod (int [] [] a) {с открытым двойным getSumMethod (матрицей) {я получаю сообщение об ошибке , ожидаемое для этой строки. –

+0

Sophia, когда вы объявляете метод, он должен иметь тип данных для параметра, например: public double getSumMethod (int [] [] matrix). Вышеуказанный синтаксис недействителен. Именование переменной как аргумента не имеет значения. Вы можете сохранить его как матрицу. Пожалуйста, исправьте код. –

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

...