1
class Solution {
    public int[] Test(int[] x, int target) {
        target = 100;
        int i;
        int j;
        int sum;
        for (i = 0; i > 3; i++) {
            for (j = 0; j > 3; j++) {
            sum = x[i] + x[j];
                if (sum == target) {
                    return x[i];
                    return x[j];
                }
            }
        }
    }
}

我正在尝试编写一个代码来返回 2 个元素(来自一个数组),它们在求和时给我目标整数 100。我不断收到以下 2 个错误:

incompatible types: int cannot be converted to int[] 
                    return x[i];                         
incompatible types: int cannot be converted to int[] 
                    return x[j];
4

2 回答 2

3
return new int[]{x[i], x[j]};

您想返回一个数组int[],而不是单个int值。

return x[i];
return x[j];

没有任何意义,因为return语句会立即中断流程(将控制权返回给调用者),从而使以下语句无法访问。

最后,您还缺少一个 return 语句。当target还没有满足时,你仍然需要从方法中返回一些东西。

它可能是一个空数组:

return new int[0];

然而,通常情况下,我们抛出一个异常,说给定的参数没有使方法工作:

throw new IllegalArgumentException("The target wasn't met for the given input.");
于 2020-02-26T11:49:08.917 回答
2
return x[i];
return x[j];

一个方法只能返回一个值。将上述内容转为:

int[] tmp = new int[2];
tmp[0] = x[i];
tmp[1] = x[j];
return tmp;
于 2020-02-26T11:49:23.957 回答