首页 > 解决方案 > 我可以在 if 语句中声明一个数组吗?

问题描述

class Solution {
    public int[] twoSum(int[] nums, int target) {

      for (int i=0; i<= nums.length()-1;i++){

          for (int j =i+1 ; j <= nums.length()-2; j++){

              if((nums[i]+nums[j]) == target )
                  int [] r = {i , j};
                  return r;
          }
      }

    }
}

...

我编写了以下代码,但在 if 语句中出现错误。我正在尝试解决 leetcode 上的一个问题,但我遇到了一个错误:

第 9 行:错误:此处不允许变量声明 int [] r = {i , j}; ^

我能做些什么来解决它,为什么我会遇到这个错误?

标签: javaarraysloopsif-statement

解决方案


正确格式化代码:

if ((nums[i]+nums[j]) == target)
    int [] r = {i , j}; // only has scope during declaration
return r; // oops! r is out of scope

编译错误是由于r在其声明之外没有任何范围引起的。

要修复,要么:

if ((nums[i]+nums[j]) == target) {
    int [] r = {i , j};
    return r; 
}

或者

if ((nums[i]+nums[j]) == target) {
    return new int[]{i , j};
}

推荐阅读