当我尝试编译Report.java时,我在第6行收到错误:error: <identifier> expected aClient.setClientName("Michael");
with和箭头指向第一个括号。
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的新手,所以请保持温和。
答案 0 :(得分:3)
使用instance initialization block
。
public class Report {
Client aClient = new Client();
//ClientLawn aClientLawn = new ClientLawn();
{
aClient.setClientName("Michael");
//aClientLawn.setLawnWidth(10);
//aClientLawn.setLawnLength(10);
}
...
}
答案 1 :(得分:2)
此行应放入初始化程序块中:
{
aClient.setClientName("Michael");
}
因此它在创建aClient
后执行。
这里的代码是为Report
的每个实例运行的。遗憾的是,您无法为其设置参数。如果您想这样做,请将此块放入构造函数中:
public Report (String clientName) {
aClient.setClientName(clientName);
//aClientLawn.setLawnWidth(10);
//aClientLawn.setLawnLength(10);
}
答案 2 :(得分:0)
正如其他人所指出的,你不能在方法之外执行代码,所以以下几行是非法的:
Client aClient = new Client();
aClient.setClientName("Michael");
它们需要包含在方法中,例如类'constructor:
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());
}
}
然后,您可以编译并执行Report
类。