得到非法的表达错误开始

时间:2012-05-26 15:40:47

标签: java

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

2 个答案:

答案 0 :(得分: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);
    }
}

根据其内容,您可能希望CreateNewstatic(因此可以通过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");