Java 标记“”上的语法错误;makeMiddle";,@在此令牌之前应为

Java 标记“”上的语法错误;makeMiddle";,@在此令牌之前应为,java,Java,我通常用Python编写代码,这个错误对我来说毫无意义。我不知道我在这里做错了什么。我用相同的错误消息检查了类似的线程,但没有结果 我认为这个错误与Java中调用的类和方法有关。尝试切换调用方法的方式,但没有这样做。有什么想法吗 public class test2 { public int[] makeMiddle(int[] nums){ int[] l1 = {nums[(nums.length/2)-1], nums[(nums.length/2)]};

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

}

必须使用构造新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});
}   

必须使用构造新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});
}   

如果您将makeMiddle参数的类型从
int[]
更改为
int..
,则可以非常简单地调用它,如下所示:

makeMiddle(1,2,3,4);
您仍然可以使用显式数组调用它,例如:

makeMiddle(new int[] { 1,2,3,4 });

该方法也应该是
static
,因为它是从static main调用的。

如果您将makeMiddle的参数类型从
int[]
更改为
int..
,那么您可以非常简单地如下调用它:

makeMiddle(1,2,3,4);
您仍然可以使用显式数组调用它,例如:

makeMiddle(new int[] { 1,2,3,4 });

该方法也应该是静态的,因为它是从static main调用的。

您的代码有几个问题

public int[] makeMiddle(int[] nums){

    int[] l1 = {nums[(nums.length/2)-1], nums[(nums.length/2)]};
    return l1;

}
main是一个静态函数。这意味着可以调用它,而无需实际实例化该类的对象。静态函数不能引用任何成员变量(因为不能保证这些变量已经实例化),因此只能调用标记为静态的成员函数。将方法定义更改为:

public static int[] makeMiddle(int[] nums){
您还有一个语法错误(重复两次)

应该是

makeMiddle(new int[]{1,2,3,4});
makeMiddle(new int[]{5,6,2,1,7,6,3,4,0,1});  

您的代码有几个问题

public int[] makeMiddle(int[] nums){

    int[] l1 = {nums[(nums.length/2)-1], nums[(nums.length/2)]};
    return l1;

}
main是一个静态函数。这意味着可以调用它,而无需实际实例化该类的对象。静态函数不能引用任何成员变量(因为不能保证这些变量已经实例化),因此只能调用标记为静态的成员函数。将方法定义更改为:

public static int[] makeMiddle(int[] nums){
您还有一个语法错误(重复两次)

应该是

makeMiddle(new int[]{1,2,3,4});
makeMiddle(new int[]{5,6,2,1,7,6,3,4,0,1});  

所以每次我给一个方法传递参数时,我总是需要把单词“new”和类型放在一起?如果你传递基元类型数组,你需要用这个构造函数来分配它们。所以每次我给一个方法传递参数时,我总是需要把单词“new”和类型放在一起。如果你传递基元类型数组,你需要用这个构造函数来分配它们,如果我理解正确;1) 如果main是静态的,那么它只能调用静态方法,并且2)我需要在Java@chopperdrawlion41)main可以调用非静态方法,前提是您为其提供了调用它们的对象,如@dafi的答案中。2) 如果您将makeMiddle的参数类型设置为
int…
,则可以删除
新的int[]{
..,如我的回答所示。Main始终要求为静态。如果你想调用一个对象的非静态方法,你必须在main中实例化这个对象,然后用它来调用它的方法;1) 如果main是静态的,那么它只能调用静态方法,并且2)我需要在Java@chopperdrawlion41)main可以调用非静态方法,前提是您为其提供了调用它们的对象,如@dafi的答案中。2) 如果您将makeMiddle的参数类型设置为
int…
,则可以删除
新的int[]{
..,如我的回答所示。Main始终要求为静态。如果要调用对象的非静态方法,必须在main中实例化该对象,然后使用它来调用其方法。