Автоматический создатель матриц на Java

#java #arrays #matrix

#java #массивы #матрица

Вопрос:

Я хотел создать двумерные матрицы в автоматизированной процедуре (в зависимости от входных данных), а затем заставить их вернуться, чтобы увидеть результаты.

Вот мой код:

 public class Two_dimensional_arrays {

    static int[][] array1;

    public static int[][] create_array(int number1, int number2) {
        int k = 1;
        for (int j = 0; j <= number2; j  ) {
            for (int i = 0; i <= number1; i  ) {

                array[i][j] = k;
                k  ;
            }
        }

        return array1;
    }
}
  

Логика всего этого заключалась в том, чтобы заполнить любую матрицу в порядке, подобном (давайте сделаем 3×3)

 1-2-3

4-5-6

7-8-9
  

Таким образом, матрица будет автоматически заполнена (в порядке возрастания), но это не сработало так, как ожидалось, поскольку я новичок в программировании.

Ответ №1:

На самом деле вам нужно где-то разместить массив.

  static int[][] array1;
  

Это объявляет переменную, способную содержать ссылку на массив; это не массив. Массив выделяется с помощью ‘new’:

  static int[][] array1 = new int[3][3];
  

Пара других моментов:

  1. ‘Array’ в вашем цикле, вероятно, должен быть ‘array1’.

  2. Поскольку ‘array1’ является переменной-членом, вероятно, нет смысла возвращать и ее. Вы могли бы пойти любым путем: иметь один массив, как в настоящее время, и ваш метод create_array будет перезаписывать его каждый раз; ИЛИ пусть create_array выделит массив нужного размера ( new int[number1][number2] ) и вернет его. Я бы выбрал последнее.

  3. Аргументы можно было бы назвать лучше: ‘row_count’, а не ‘number1’, ‘column_count’, а не ‘number2’ — или что-нибудь подобное, что передает предполагаемое значение. (Обычно Java-программисты используют имена в верблюжьем регистре, такие как rowCount , вместо подчеркивания, но это не особенно интересное обсуждение и не моя точка зрения здесь).

Ответ №2:

 public class Two_dimensional_arrays {
    
    public static int[][] create_array(int number1, int number2){
        int[][] matrix = new int[number1][number2];
        
        int k = 1;
        
        for(int i = 0; i<number1; i  ){
            for(int j = 0; j<number2; j  ){
                matrix[i][j] = k;
                k  ;
            }
        }
        
        return matrix;
    }
    
}