这是我的代码:
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;
}
}
我试图找到解决这个问题的方法,但我只是迷失了。请帮我调试我的代码。
答案 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是一个静态方法;你不能在静态方法中使用实例方法。
您有两个解决方案:
groupSum
方法定义为静态。创建班级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;
}
}