我需要创建一个方法,将一个整数的多维数组作为参数,并执行以下操作:
检查行数和列数是否为奇数,否则返回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);
}
}
}
在那之后,我真的不知道该怎么做..感谢您帮助我
答案 0 :(得分:0)
我想你需要这样的东西
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;
}
祝你的家庭作业好运。 -_-
答案 1 :(得分:0)
您的方法需要两个integeres作为参数,而不是二维数组。相反,当它应该返回一个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;
}