我是java的新手。我试着创建我的第一个程序&我收到这个错误。
E:\java>javac Robot.java
Robot.java:16: error: illegal start of expression
public String CreateNew (); {
^
Robot.java:16: error: ';' expected
public String CreateNew (); {
^
2 errors
以下是我的计划。
public class Robot {
public static void main(String args[]){
String model;
/*int year;*/
String status;
public String CreateNew () {
Robot optimus;
optimus = new Robot();
optimus.model="Autobot";
/*optimus.year="2008";*/
optimus.status="active";
return (optimus.model);
}
}
}
答案 0 :(得分:4)
您正在尝试在方法(CreateNew
)中定义方法(main
),而这在Java中是无法做到的。将其移出main
;并且model
和status
似乎是实例变量(不是方法变量),也可以移动它们:
public class Robot {
// Member variables
String model;
/*int year;*/
String status;
// main method
public static void main(String args[]){
// Presumably more stuff here
}
// Further method
public String CreateNew () {
Robot optimus;
optimus = new Robot();
optimus.model="Autobot";
/*optimus.year="2008";*/
optimus.status="active";
return (optimus.model);
}
}
根据其内容,您可能希望CreateNew
为static
(因此可以通过Robot.CreateNew
调用,而不是通过Robot
实例调用)。像这样:
public class Robot {
// Member variables
String model;
/*int year;*/
String status;
// main method
public static void main(String args[]){
// Presumably more stuff here
}
// Further method
public static String CreateNew () {
// ^----------------------------- here's the change
Robot optimus;
optimus = new Robot();
optimus.model="Autobot";
/*optimus.year="2008";*/
optimus.status="active";
return (optimus.model);
}
}
用作
String theModel = Robot.CreateNew();
...虽然我不清楚为什么你要创建一个Robot
实例然后扔掉它然后只返回model
实例成员的值。
有点偏离主题,但Java中压倒性的惯例是方法名称(静态或实例)以小写字母开头,例如createNew
而不是CreateNew
。
答案 1 :(得分:1)
在创建CreateNew()
之前,您没有关闭主要方法。事实上,我不认为你的Robot类中有一个main方法,你的整个程序应该只有一个主方法。而你的CreateNew应该是构造函数:
public class Robot {
String model;
/*int year;*/
String status;
public Robot () {
this.model="Autobot";
this.status="active";
}
}
}
然后在另一个包含main方法的类中(或者也可以在同一个类中):
public class OtherClass {
public static void main(String[] args) {
Robot optimus = new Robot(); // here you create an instance of your robot.
}
}
然后你可以有第二个构造函数,它接受参数模型和状态:
public Robot (String m, Status s) {
this.model=m;
this.status=s;
}
最后在你的主要:
Robot prime = new Robot("aName", "aStatus");