1

我有以下问题:

在方法调用中使用指针作为参数时,我得到“错误:预期标识符”错误。

这是我的代码:

class Data {
    Person a = new Person("John");
    Person b = new Person("Mary");

    a.willHug(b);       // Gets error: <identifier> at this line
}

class Person {
    private String name;
    private Person hugs;

    Person(String n){
        this.name = n;
    }

    public void willHug(Person p) {
        hugs = p;
    }    
}
4

6 回答 6

5

您应该将此代码放入方法中以执行它:

例如,主要方法:

class Data {

    public static void main(String args[]){
         Person a = new Person("John");
         Person b = new Person("Mary");

         a.willHug(b);       // Gets error: <identifier> at this line

    }
}

我认为您应该阅读SO 的这个问题,以便更好地了解 Java 中如何传递参数。

希望能帮助到你。

于 2013-01-18T16:47:38.487 回答
2

您需要将代码放在 main 方法中:

public static void main (String[] args) {

    Person a = new Person("John");
    Person b = new Person("Mary");

    a.willHug(b);
}

同样在 Java 中,我们不将这些指针称为变量。变量具有对特定对象实例或原始值的引用。

于 2013-01-18T16:48:00.840 回答
2

你需要a用一个方法包围操作,可以是类方法、main()方法,甚至可能是构造函数:

class Data {
    Person a = new Person("John");
    Person b = new Person("Mary");

    public Data() {
        a.willHug(b);
    }
}
于 2013-01-18T16:47:38.173 回答
1

您正在调用 Data 类定义中的方法?这是不正确的,您要么需要一个“主要”来做到这一点,要么将其放在另一种方法中。

于 2013-01-18T16:47:54.360 回答
1

您在那里缺少一个方法(我介绍了一个名为 foo() 的方法):

class Data {
    Person a = new Person("John");
    Person b = new Person("Mary");

    public void foo() {
        a.willHug(b);       // Gets error: <identifier> at this line
    }
}

class Person {
    private String name;
    private Person hugs;

    Person(String n){
        this.name = n;
    }

    public void willHug(Person p) {
        hugs = p;
    }    
 }
于 2013-01-18T16:48:03.783 回答
1

问题不是因为您使用了指针(在 Java 中称为引用),而是因为这一行:

a.willHug(b);

在任何方法之外。您只能在该位置放置声明或初始化块 ({})。

于 2013-01-18T16:48:08.697 回答