#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];
Пара других моментов:
-
‘Array’ в вашем цикле, вероятно, должен быть ‘array1’.
-
Поскольку ‘array1’ является переменной-членом, вероятно, нет смысла возвращать и ее. Вы могли бы пойти любым путем: иметь один массив, как в настоящее время, и ваш метод create_array будет перезаписывать его каждый раз; ИЛИ пусть create_array выделит массив нужного размера (
new int[number1][number2]
) и вернет его. Я бы выбрал последнее. -
Аргументы можно было бы назвать лучше: ‘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;
}
}