2012-09-29 52 views
-1

Possible Duplicate:
non-static variable cannot be referenced from a static context (java)非静态变量c不能从静态上下文和非静态变量的引用不能从静态上下文

我的努力创建多个对象(在这种情况下,汽车)引用然后我试着检查c1(对象的名称)是否被创建(知道它是),然后检查是否创建了c2(同一类的其他对象)(知道它不是)。 我创建了班车: 包停车场;

/** 
* 
* @author HASLima 
*/ 
public class Car { 

String brand; 
String plates; 
int mileage; 

public String getMarca() { 
    return brand; 
} 

public void setMarca(String brand) { 
    this.brand = brand; 
} 

public String getMatricula() { 
    return plates; 
} 

public void setMatricula(String plates) { 
    this.plates = plates; 
} 

public int getKilometros() { 
    return mileage; 
} 

public void setKilometros(int mileage) { 
    this.mileage = mileage; 
} 


} 

然后创建的类公园: /* * 要改变这个模板,选择Tools |模板 *并在编辑器中打开模板。 */ 包停车场;

/** 
* 
* @author HASLima 
*/ 
public class Park { 
    int nrOfCars; 
    int space; 
    Car[] c; 
    int a = 0; 

    public Park (int nrOfPlaces){ 
     space = nrOfPlaces; 
     nrOfCars = 0; 

    } 
    public static void main(String[] args) { 
     Park park1 = new Park(5); 
     c[a] = new Car(); 
    } 
} 

这里是问题,

C [A] =新汽车();

返回此错误:

非静态变量c不能从静态上下文 和 非静态变量不能从静态上下文

+2

的原因是一样的,在其他1000这个网站上的问题提出了同样的问题。 –

回答

3

引用的阵列Car[] c被定义为一个被引用公园的对象变量,因此必须使用park1.c[a],而不是试图调用参考c[a]

也是可变的a是公园的对象,您不能引用它,来自main。它应该是park1.a或更好,但用getter封装变量park1.getA()

+0

事情是,我做了类似的事情,但是我没有在c之前使用任何东西,也没有在a之前使用任何东西。但是你所说的工作如此完美 –

+0

@HélderLima我会推荐阅读关于变量范围http://www.java2s.com/Tutorial/Java/0020__Language/VariableScope.htm以及关于类和类的实例http:// docs .oracle.com/javase/tutorial/java/javaOO/classvars.html – gtgaxiola

+0

现在我得到这个:Exception in thread“main”java.lang.NullPointerException \t at parkingLot.Park.main(Park.java:24) Java结果:1 –

1

非静态变量不能在静态方法内访问,除非您在其实例上调用它们。 在你的情况为c []是一个实例变量而言不是静态的,要访问它成规静态方法内部访问它在公园instanc这样的:

Park park1 = new Park(5); 
park1.c[park1.a] = new Car(); 
相关问题