‘.class’ expected
这个错误通常由于编译器没法识别错误,可能是需要强制类型转换或者不需要带上类型的值传递。(来自Stack Overflow)。我这里应该原因是return时候去掉out的类型声明,直接return out。
int[]out ={i,j};
return int[]out;}
error: missing return statement
class Solution {
public int[] twoSum(int[] nums, int target) {
for(int i=0;i<nums.length;i++)
for(int j=1;j<nums.length;j++){
int result=nums[i]+nums[j];
if (result==target){
int[]out ={i,j};
return out;
}
}
// return null;
}
}
如果不加return null ,for 循环后仍然找不到相等值的话,函数没有返回值。
Could not determine Java version using executabl
需要Gradle 4.7 以上版本 ,没有内置于idea,需要本地安装然后使用local的。
variable declaration not allowed here
变量声明需要在正确位置,与引用不一样。
完整代码
class TwoSum_1 {
public int[] twoSum(int[] nums, int target) {
Map <Integer, Integer> map =new HashMap();
for(int i =0;i < nums.length; i++){
// 构造一个HashMap,把数组的值作为key,数组下标作为v,key与target减去另一个数组值相比,可以得到第二个数组下标;
int x = nums[i];
if(map.containsKey(target-x)) {
int[] result = new int[2];
result[0] = map.get(target -x);
result[1] = i;
return result;
}
map.put(x,i);
}
throw new IllegalArgumentException("No two sum solution");
}
public static void main(String[] args){
TwoSum_1 solution1 = new TwoSum_1();
int[] nums = new int[]{2,7,11,5};
int target = 9;
int[] re=solution1.twoSum(nums,target);
String fire= Arrays.toString(re);
System.out.println(fire);
}
}