0

我对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);
        }
    }
}
4

2 回答 2

4

您正在尝试在方法 ( CreateNew)定义方法 ( main),而这在 Java 中是无法做到的。将其移出main; 并且看起来是实例变量(不是方法变量),也移动它们modelstatus

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.

于 2012-05-26T15:42:18.663 回答
1

在创建 main 方法之前,您没有关闭CreateNew()它。事实上,我不认为你的意思是在你的 Robot 类中有一个 main 方法,你应该为你的整个程序只有一个 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");
于 2012-05-26T15:42:43.207 回答