为什么我会收到这些错误?非法表达的开始

时间:2017-12-24 21:36:42

标签: java arrays

这是我的代码:

public class JavaApplication16 {
    public static void main(String[] args) {
       //illegal start of expression, ']' expected, <identifier> expected
       boolean a = groupSum(0, [2,4,8], 10); 
    }

    public boolean groupSum(int start, int[] nums, int target) {
        if (start >= nums.length) return (target == 0);

        if (groupSum(start + 1, nums, target - nums[start])) return true;
        if (groupSum(start + 1, nums, target)) return true;

        return false;
    }
}

我试图找到解决这个问题的方法,但我只是迷失了。请帮我调试我的代码。

4 个答案:

答案 0 :(得分:3)

您没有使用正确的表示法来创建数组。创建一个int数组如下所示:new int[]{1, 2, 3}.代码中存在的另一个问题是,您是从静态上下文调用非静态方法。您可以将groupSum标记为静态来解决此问题。 以下是您的代码的修复版本:

class JavaApplication16 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        //illegal start of expression, ']' expected, <identifier> expected
        boolean a = groupSum(0, new int[]{2,4,8}, 10);
    }
    public static boolean groupSum(int start, int[] nums, int target) {
        if (start >= nums.length) return (target == 0);

        if (groupSum(start + 1, nums, target - nums[start])) return true;
        if (groupSum(start + 1, nums, target)) return true;

        return false;
    }
}

答案 1 :(得分:0)

这是使用int数组的正确方法。

boolean a = groupSum(0, new int[] {2, 4, 8}, 10);

答案 2 :(得分:0)

您需要将代码更改为以下

1- new int[]{2,4,8}创建整数数组

2-将groupSum方法更改为静态或创建对象形式JavaApplication16,如下所示JavaApplication16 ja16= new JavaApplication16(); ja16.groupSum(...);

您可以执行以下操作来解决问题。

 public class JavaApplication16 {
            public static void main(String[] args) {
            boolean a = groupSum(0, new int[]{2,4,8}, 10);// new int[]{2,4,8} to create array of ints 
        }

        public static boolean groupSum(int start, int[] nums, int target) {// change the method to be static
            if (start >= nums.length) return (target == 0);

            if (groupSum(start + 1, nums, target - nums[start])) return true;
            if (groupSum(start + 1, nums, target)) return true;

            return false;
        }

}

答案 3 :(得分:0)

你必须将int数组定义为

boolean a = groupSum(0, new int[] {2,4,8}, 10);

另一件事,方法groupSum是一个实例方法,而main是一个静态方法;你不能在静态方法中使用实例方法。

您有两个解决方案:

  1. groupSum方法定义为静态。
  2. 创建班级JavaApplication16的对象并使用其方法。 代码就像:

    public class JavaApplication16 { 
     public static void main(String[] args) {
       JavaApplication16 ja16 = new JavaApplication16();
       boolean a = ja16.groupSum(0, new int[] {2,4,8}, 10); 
     }
    
     public boolean groupSum(int start, int[] nums, int target) { 
      if (start >= nums.length) return (target == 0); 
      if (groupSum(start + 1, nums, target - nums[start])) return true; 
      if (groupSum(start + 1, nums, target)) return true;
    
      return false; 
     } 
    }