有人可以解释为什么这个java类不会编译吗?

时间:2015-10-18 10:45:39

标签: java

我是一个java新手,我试图编译它,但它不会编译。有人可以帮忙吗?它说虚空是表达的非法开始。我是从https://docs.oracle.com/javase/tutorial/java/concepts/class.html得到的。当我删除main方法及其结束括号时,它会编译。为什么是这样?我怎么能用类中包含的main方法写这个呢?

class Bicycle{
public static void main(String args[]){
    int cadence = 0;
    int speed = 0;
    int gear = 1;

   void changeCadence(int newValue){
       cadence = newValue;
   }

    void changeGear(int newValue){
        gear = newValue;
    }

    void speedUp(int increment){
        speed = speed + increment;
    }

    void applyBrakes(int decrement){
        speed = speed - decrement;
    }

    void printStates(){
        System.out.println("cadence: " + cadence + " speed: " +speed + " gear: " + gear);

    }

}

}

2 个答案:

答案 0 :(得分:2)

您将main方法放在错误的位置。 main方法不应包含类的方法和成员。

您应该提取主要方法:

class Bicycle{

    int cadence = 0;
    int speed = 0;
    int gear = 1;

    void changeCadence(int newValue){
       cadence = newValue;
    }

    void changeGear(int newValue){
        gear = newValue;
    }

    void speedUp(int increment){
        speed = speed + increment;
    }

    void applyBrakes(int decrement){
        speed = speed - decrement;
    }

    void printStates(){
        System.out.println("cadence: " + cadence + " speed: " +speed + " gear: " + gear);

    }

    public static void main(String args[])
    {
        // here you can create an instance of the class and test it
        Bicycle bike = new Bicycle ();
        bike.changeCadence(4);
        bike.changeGear(5);
        bike.speedUp(3);
        bike.printStates();
    }

}

答案 1 :(得分:0)

只是拇指规则 -
java类中的方法块不能在其中包含另一个方法块。是的,我们可以在方法块中创建一个本地内部类,然后它可以包含方法,但不能直接包含。