Мне нужно создать метод, который принимает в качестве аргумента многомерный массив целых чисел и выполняет следующие действия:
Проверяет, является ли количество строк и столбцов нечетным, в противном случае возвращает 0.
Если массив нечетный, то метод возвращает сумму членов средняя линия, за вычетом тех, что в среднем столбце.
Например :
2 4 6
9 10 17
1 6 18
Этот пример должен вернуть: (9 + 10 + 17) − (4 + 10 + 6) = 36 − 20 = 16
Вот что я сделал до сих пор:
static int [][] sub(int i , int j) {
if (i%2 == 0 || j%2 == 0)
return 0;
else
int[][] tab = new int[i][j];
// Create array with values from 0 to 99 randomly
for (int i = 0; i < tab.length; i++) {
for (int j = 0; j < tab[i].length; j++) {
tab[i][j] = (int) (Math.random() * 99);
}
}
}
После этого я действительно не знаю, что делать ... Спасибо, что помогли мне
Java не поддерживает функция.
@AniketSahrawat - что ты имеешь в виду?
@ScaryWombat У нас есть методы: p
Я думаю, вы упустили, что ваш метод должен ожидать один аргумент, содержащий двумерный массив, а не создавать его и не возвращать?
ну алгоритм, если вы предпочитаете
@ScaryWombat И, конечно, я надеюсь, что мы не будем углубляться в те лямбды, которые поддерживают функциональное программирование.
Вы не делаете то, что вам сказали. Вы должны написать метод, который принимает двумерный массив и делать что-то. со значениями внутри. Вы создаете двумерный массив.
Из этого примера кажется, что вы уже понимаете петли. в чем именно проблема?:
@PaulJanssens, я не знаю, как вызвать записи массива.
Я думаю, ты сможешь сделать это самостоятельно. Вы уже понимаете петли и знаете их параметры.
@RedaLihuak Вы можете добавлять записи с помощью +? : D
Лучшая часть - это писать код для такого рода запросов и никогда не получать «Ответ полезен» или быть выбранным в качестве окончательного ответа.




Я думаю тебе нужно что-то вроде этого
static int sub(int i , int j) {
int result;
int[][] tab = new int[i][j];
if (i % 2 == 0 || j % 2 == 0) {
result = 0;
}
else {
// Create array with values from 0 to 99 randomly
for (int k = 0; k < i; k++) {
for (int l = 0; l < j; l++) {
tab[k][l] =(int)(Math.random()*99);
}
}
int horizontalSum = 0;
int verticalSum = 0;
for(int k = 0; k<i; k++){
horizontalSum+=tab[(i/2)][k];
}
for(int l = 0; l<j; l++){
verticalSum += tab[l][(j/2)];
}
result = horizontalSum-verticalSum;
}
return result;
}
Удачи с домашним заданием. -_-
Ваш метод принимает в качестве параметров два целых числа, а не двумерный массив. Вместо этого он возвращает двумерный массив, тогда как должен просто возвращать int.
Фактически это:
static int [][] sub(int i , int j) {
if (i%2 == 0 || j%2 == 0)
return 0;
^
это ошибка времени компиляции. Вы заявили о возврате двумерного целочисленного массива, но вы просто возвращаете целое число.
Думаю, ваш метод должен выглядеть так:
static int sub(int[][] array)
{
if (array.length % 2 == 0) return 0;
for (int[] x : array)
{
if (x.length % 2 == 0) return 0;
}
int result = 0;
int middle = array.length / 2;
for (int i : array[middle])
{
result += i;
}
for (int i = 0; i < array[middle].length; i++)
{
result -= array[i][middle];
}
return result;
}
Это не сработает. array.length возвращает целое число, а не float или double. Так, например, если вы сделаете 5/2, он вернет 2, а не 2,5. Вы должны добавить 1, а не 0,5.
@EmreAcar Вы правы, мой +0,5 бесполезен, но он не нарушает метод, поскольку массивы начинаются с 0, и мне даже не нужно добавлять 1. Я обновил свой ответ.
Привет и добро пожаловать. Это домашнее задание?