Java 错误:<;标识符>;预期

Java 错误:<;标识符>;预期,java,Java,当我试图编译Report.java时,我在第6行遇到一个错误:error:expected aClient.setClientName(“Michael”)和箭头指向第一个括号 public class Client { private String _clientName; public String getClientName(){ return _clientName; } public void setClientName(String

当我试图编译Report.java时,我在第6行遇到一个错误:
error:expected aClient.setClientName(“Michael”)和箭头指向第一个括号

public class Client {

    private String _clientName;

    public String getClientName(){
        return _clientName;
    }
    public void setClientName(String clientName){
        _clientName = clientName;
    }

}
public class Report {

    Client aClient = new Client();
    //ClientLawn aClientLawn = new ClientLawn();

    aClient.setClientName("Michael");
    //aClientLawn.setLawnWidth(10);
    //aClientLawn.setLawnLength(10);

    public void output(){
        System.out.println(aClient.getClientName());
        //System.out.println(aClientLawn.calcLawnSize());
    }

}

我还想提醒大家,我是Java新手,所以请温和一点。

使用
实例初始化块

public class Report {

    Client aClient = new Client();
    //ClientLawn aClientLawn = new ClientLawn();
    {
        aClient.setClientName("Michael");
        //aClientLawn.setLawnWidth(10);
        //aClientLawn.setLawnLength(10);
    }
    ...
}

此行应放入初始值设定项块中:

{
    aClient.setClientName("Michael");
}
因此,它在创建
aClient
之后执行

这里的代码针对
报告的每个实例运行。不幸的是,您无法为其设置参数。如果要执行此操作,请将此块放入构造函数:

public Report (String clientName) {
    aClient.setClientName(clientName);
    //aClientLawn.setLawnWidth(10);
    //aClientLawn.setLawnLength(10);
}
public class Report {
    public Report() {
        Client aClient = new Client();
        aClient.setClientName("Michael");
    }

    // ....
}

正如其他人所指出的,您不能在方法之外执行代码,因此以下行是非法的:

Client aClient = new Client();
aClient.setClientName("Michael");
它们需要包装在方法中,例如类的构造函数:

public Report (String clientName) {
    aClient.setClientName(clientName);
    //aClientLawn.setLawnWidth(10);
    //aClientLawn.setLawnLength(10);
}
public class Report {
    public Report() {
        Client aClient = new Client();
        aClient.setClientName("Michael");
    }

    // ....
}
不过,看起来您希望此代码是可执行的,在这种情况下,您希望将所有代码都放在
main
方法中,例如:

public class Report {
    public static void main(String... args) {
        Client aClient = new Client();
        aClient.setClientName("Michael");
        System.out.println(aClient.getName());
    }
}

然后,您可以编译并执行
报告
类。

在此上下文中,它们被称为
初始值设定项块
。匿名块用于限制方法中变量的范围。