令牌“makeMiddle”上的语法错误,@此标记之前的预期

时间:2014-03-30 16:56:28

标签: java

我通常在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});
    }   

}

3 个答案:

答案 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调用的。