方法无法从main方法读取数组元素。为什么?

时间:2014-09-16 20:42:05

标签: java arrays

public static void main(String[] args) {

    Cars[] cars = new Cars[5];
    cars[0] = new Cars("BMW", 318, "SomeText");

    carDetails(0);
}

private static void carDetails( int index ) {
    System.out.println( cars[index].getName() + " "
                        + cars[index].getModel() + " "
                        + cars[index].getSomeText());
}

我有一个带有构造函数的分离Car类(String,int,String) 以及字段和访问者。我不能编译这个因为我得到了错误 在carDetails方法中。 (汽车[索引] ....)它说:

无法找到符号 符号:变量汽车 location:clas Main

为什么我在carDetails方法中看不到汽车元素? 提前谢谢!

6 个答案:

答案 0 :(得分:2)

变量cars在方法main中本地定义,并且在方法carDetails()中不可见/可访问。您可以通过在

之外定义变量来使变量成为静态变量
static Cars[] cars = new Cars[5];

答案 1 :(得分:1)

一种方法中的代码无法在另一种方法中查看变量。如果您需要其他地方可访问的变量,请将它们设为类的静态成员。

class Foo {
    private static Car[] cars;
    public static void main(String[] args) {
         cars = new Car[5];
         cars[0] = new Car("BMW", 318, "SomeText");
         carDetails(0);
    }
    private static void carDetails( int index ) {
       System.out.println( cars[index].getName() + " "
                    + cars[index].getModel() + " "
                    + cars[index].getSomeText());
    }
}

答案 2 :(得分:0)

将功能更改为:

 private static void carDetails(Cars[] cars, int index )
 carDetails(cars, 0);

然后也进入汽车。

答案 3 :(得分:0)

将该参数简单传递给方法

private static void carDetails(  Cars cars ) {
System.out.println( cars.getName() + " "
                    + cars.getModel() + " "
                    + cars.getSomeText());
}

从主要调用此方法如

 carDetails(cars[0]);

答案 4 :(得分:0)

要执行您想要的操作,您必须将数组作为参数传递给方法。

public static void main(String[] args) {

    Cars[] cars = new Cars[5];
    cars[0] = new Cars("BMW", 318, "SomeText");

    carDetails(0, cars);
}

private static void carDetails( int index, Cars[] cars ) {
    System.out.println( cars[index].getName() + " "
                        + cars[index].getModel() + " "
                        + cars[index].getSomeText());
}

答案 5 :(得分:0)

因为汽车是在主要方法中声明的,并且只在内部可见。对于可见性,您应该将参数传递给carsDetail函数,或者将其声明为类中的静态成员。

static Cars[] cars = new Cars[5];

public static void main(String[] args) {

    cars[0] = new Cars();
    carDetails(0);
}

private static void carDetails(int index) {
    System.out.println(cars[index].getName() + " "
            + cars[index].getModel() + " "
            + cars[index].getSomeText());
}

static Cars[] cars = new Cars[5];

public static void main(String[] args) {

    cars[0] = new Cars();
    carDetails(cars, 0);
}

private static void carDetails(Cars[] cars, int index) {
    System.out.println(cars[index].getName() + " "
            + cars[index].getModel() + " "
            + cars[index].getSomeText());
}