2014-06-05 2 views
-1

방금 ​​Java 프로그래밍을 시작했으며이 예제를 따르고 있으며 "정적 컨텐츠에서 참조 할 수없는 정적 변수"오류가 계속 발생합니다. 이 코드는 종지, 속도 및 기어를 출력합니다. 나는 Bicycle bike1=new Bicycle();에서 오류가 발생하고 Bicycle bike2=new Bicycle(); 다음은 코드입니다 :비 정적 변수 오류

public class BicycleDemo 
{ 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) 
{ 
    // TODO code application logic here 
    Bicycle bike1= new Bicycle(); 
    Bicycle bike2= new Bicycle(); 

    bike1.changeCadence(50); 
    bike1.speedUp(10); 
    bike1.changeGear(2); 
    bike1.printStatments(); 

    bike2.changeCadence(40); 
    bike2.speedUp(12); 
    bike2.applyBreaks(3); 
    bike2.printStatments(); 
} 

class Bicycle 
{ 
    int cadence=0; 
    int speed=0; 
    int gear=1; 

    void changeCadence(int value) 
    { 
     cadence=value; 
    } 
    void changeGear(int value) 
    { 
     gear=value; 
    } 
    void speedUp(int increment) 
    { 
     speed=speed+increment; 
    } 
    void applyBreaks(int decrement) 
    { 
     speed=speed-decrement; 
    } 
    void printStatments() 
    { 
     System.out.println("Cadence:"+cadence+"Speed:"+speed+"Gear:"+gear); 
    } 
} 
+2

는 오류 메시지를 가지고 구글이나 유래에 검색 할 수 있습니다. –

+0

풀 오류 메시지와 스택 추적을 붙여 넣기 ... –

+1

'class Bicycle'을'static class Bicycle'으로 변경하면 별도의 파일에 넣지 않고 main 메소드에서 사용하고 싶을 때 사용합니다. – SamYonnou

답변

1

문제는 Bicycle 클래스는 내부 클래스이며, 직접 static 방법으로 인스턴스화 할 수 없다는 것입니다. 다만 BicycleDemo 클래스 외부 이동 :

public class BicycleDemo { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     // TODO code application logic here 
     Bicycle bike1= new Bicycle(); 
     Bicycle bike2= new Bicycle(); 

     bike1.changeCadence(50); 
     bike1.speedUp(10); 
     bike1.changeGear(2); 
     bike1.printStatments(); 

     bike2.changeCadence(40); 
     bike2.speedUp(12); 
     bike2.applyBreaks(3); 
     bike2.printStatments(); 
    } 
} 

//note the braces (}) up here 

class Bicycle { 
    //definition here... 
} 
0

하나가 static class Bicycleclass Bicycle로 변경하거나, 바람직하게는, 별도의 파일 (Bicycle.java)로 이동.

+0

또는 동일한 파일에서 두 번째 클래스로 만듭니다. –

0

외부 클래스의 개체에 대한 참조가 없어도 비 정적 인 내부 클래스에 액세스 할 수 없습니다. 당신이 경우 , 당신은 당신이 먼저 외부 클래스 (BicycleDemo)의 인스턴스를 생성 할 수 있도록, 당신은 정적 컨텍스트 (공공 정적 무효 메인 (문자열 []에 args))에서 작동 Bicycle bike1= new Bicycle();

의 인스턴스를, 그리고 수 다음 내부 클래스의 인스턴스를 만듭니다. 이 경우 당신은 쓸 필요가 :

BicycleDemo demo = new BicycleDemo(); 

Bicycle bike1= demo.new Bicycle(); 
Bicycle bike2= demo.new Bicycle(); 

...