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;の外に移動します。および asmodelstatusインスタンス変数 (メソッド変数ではない) のように見える場合は、それらも移動します。

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たい場合があります。このような:staticRobot.CreateNewRobot

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

メイン メソッドを作成する前に、メイン メソッドを閉じませんでしたCreateNew()。実際、Robot クラスにメイン メソッドを用意するつもりはなかったと思います。プログラム全体でメイン メソッドを 1 つだけ持つ必要があります。そして、あなたの CreateNew はコンストラクターでなければなりません:

public class Robot {
        String model;
        /*int year;*/
        String status;

        public Robot () {
            this.model="Autobot"; 
            this.status="active";
        }
    }
}

次に、メイン メソッドを含む別のクラス (または同じクラスにある可能性もあります):

public class OtherClass {
    public static void main(String[] args) {
        Robot optimus = new Robot(); // here you create an instance of your robot.
    }
}

次に、そのようなモデルとステータスをパラメーターで受け取る2番目のコンストラクターを作成できます。

public Robot (String m, Status s) {
        this.model=m; 
        this.status=s;
}

そして最後にあなたのメインで:

Robot prime = new Robot("aName", "aStatus");
于 2012-05-26T15:42:43.207 に答える