我通常在Python中编码,这个错误对我来说毫无意义。我无法理解我在这里做错了什么。我检查了类似的线程,但错误消息相同。
我认为这个错误与Java中调用相同的类和方法有关。尝试切换方法被调用但没有这样做。有什么想法吗?
public class test2 {
public int[] makeMiddle(int[] nums){
int[] l1 = {nums[(nums.length/2)-1], nums[(nums.length/2)]};
return l1;
}
public static void main(String[] args){
makeMiddle({1,2,3,4});
makeMiddle({5,6,2,1,7,6,3,4,0,1});
}
}
答案 0 :(得分:2)
您的代码存在一些问题。
public int[] makeMiddle(int[] nums){
int[] l1 = {nums[(nums.length/2)-1], nums[(nums.length/2)]};
return l1;
}
main是一个静态函数。这意味着可以在不实际实例化该类的对象的情况下调用它。静态函数不能引用任何成员变量(因为不能保证这些变量已经实例化),因此只能调用标记为static的成员函数。将方法定义更改为:
public static int[] makeMiddle(int[] nums){
您还有语法错误(重复两次)。
makeMiddle({1,2,3,4});
makeMiddle({5,6,2,1,7,6,3,4,0,1});
应该是
makeMiddle(new int[]{1,2,3,4});
makeMiddle(new int[]{5,6,2,1,7,6,3,4,0,1});
答案 1 :(得分:1)
您必须使用构造new int [] {a,b,...};
public static void main(String[] args){
test2 t2 = new test2();
t2.makeMiddle(new int[]{1,2,3,4});
t2.makeMiddle(new int[]{5,6,2,1,7,6,3,4,0,1});
}
答案 2 :(得分:1)
如果您将makeMiddle参数的类型从int[]
更改为int...
,那么您可以按如下方式简单地调用它:
makeMiddle(1,2,3,4);
您仍然可以使用显式数组调用它,例如:
makeMiddle(new int[] { 1,2,3,4 });
该方法也应该是static
,因为它是从静态main调用的。