我无法在这里找到错误告诉我的内容:
filtered = (...)
错误是:
class Ideone {
public static void main (String[] args) throws java.lang.Exception
{
twoSum({2,4,7},9);
}
public static int[] twoSum(int[] nums, int target) {
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[j] == target - nums[i]) {
return new int[] { i, j };
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
}
我认为声明是好的,那么如何更改以使此功能正常工作?
答案 0 :(得分:4)
{2,4,7}
只能用于数组的声明,例如:
int[] arr = {2,4,7};
要将此类数组作为参数传递给方法,请使用
twoSum(new int[] {2,4,7},9);
答案 1 :(得分:2)
通过更改
传递数组而不是写一些非法的东西twoSum({2,4,7},9);
到
twoSum(new int[]{2,4,7},9);
答案 2 :(得分:0)
你走了:
class Ideone {
public static void main (String[] args) throws java.lang.Exception
{
twoSum(new int[] {2,4,7},9);
}
public static int[] twoSum(int[] nums, int target) {
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[j] == target - nums[i]) {
return new int[] { i, j };
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
}
您需要创建一个数组对象,因此它是twoSum(new int[] {2,4,7},9);
。当你返回时,你已经在函数中完成了它:return new int[] { i, j };
你必须在main函数中做同样的事情。
答案 3 :(得分:0)
您的代码没有编译也没有运行,因为您有两个错误;
令牌“twoSum”上的语法错误,@在此令牌之前预期
表示此次调用
twoSum({2,4,7}, 9);
在java中无效,需要传递一个新的匿名int数组:
twoSum(new int[]{2,4,7}, 9);
第二个错误是:
此方法必须返回int []
类型的结果
因为 twosum 方法仅在满足此条件时返回
if (nums[j] == target - nums[i]) {
return new int[]{ i, j };
}
但你需要修改一下逻辑并保证方法ALLWAYS返回一个int []