2015-10-18 34 views
0

我是一个Java新手,我试图编译这个,但它不会编译。有人可以帮忙吗?它说,无效是表达的非法开始。我从https://docs.oracle.com/javase/tutorial/java/concepts/class.html得到这个。当我删除主方法及其右括号时,它会编译。为什么是这样?我如何用这个类中包含的主要方法来写这个?有人可以解释为什么这个java类不会编译?

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

注意:这种学习语法和东西的方式效率不高。每当编译器咆哮你时,你是否打算提出一个新问题?更好的做法:把事情做得小:写下几行代码(你认为这些代码应该是正确的)。然后运行编译器。仔细阅读错误信息。固定。重复。也许,先研究Java的“结构”属性;就像在这里一样;哪些元素去上课的地方? – GhostCat

回答

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(); 
    } 

} 
+0

谢谢!我意识到,我在布置课堂教学方法时不应该堵塞主要方法(对吧?)。 –

0

只需一个大拇指基于规则
在Java类中的方法块不能在它里面的另一种方法块。是的,我们可以在方法块内创建一个本地内部类,然后它可以包含方法,但不能直接。

+0

哦好吧,所以main是一种方法,所以它不能定义changeGear和applyBreaks以及其中的其他方法?谢谢!出于好奇,你如何做出当地的内部课堂?这听起来像现在可能对我来说太高级了。 –

+0

为什么这些方法在它们前面有“空白”? –

+0

void方法,此方法不会返回任何类型的值(原始对象或类对象)。要详细了解本地类,请访问[java教程](https://docs.oracle.com/javase/tutorial/java/javaOO/localclasses.html)。 – Manoj

相关问题