Доступ к object.variable в массиве объектов - PullRequest
1 голос
/ 26 июня 2010

Мне нужна помощь с этим фрагментом кода.

public class ParkingLot {

static int MAX = 5;
static Car[] Slot = new Car[MAX];

public static void main(String[] args) {


    Slot[0] = new Car("1234", "White");
    Slot[1] = new Car("5678", "Black");

}

public static void Allot() {
    for (int i = 0; i <= Slot.length; i++) {
        System.out.println(Slot.getNo);

    }
}

Я храню Car Объект в Slot. Я хочу распечатать / получить доступ к No и Colour автомобиля, хранящегося в слоте. Как мне это сделать?

Ответы [ 5 ]

2 голосов
/ 26 июня 2010

Что ж, если car имеет открытое свойство или метод открытого метода получения (это предпочтительно - getNumber() и getColour()), вы можете вызывать их, повторяя массив с циклом for-each:

for (Car car : slot) {
    System.out.println(car.getColour());
}

Обратите внимание, что в нижнем регистре slot - имена переменных в Java должны быть строчными.Я бы также посоветовал для именования массива именем множественного числа - т.е. slots.

. Обратите внимание также, что способ итерации, предоставляемый другими, возможен, но не рекомендуется для базового случая итерации всего массива. Effective Java (Bloch) рекомендует по возможности использовать цикл foreach.

1 голос
/ 29 октября 2016

Извините за опоздание.В приведенных выше ответах я заметил, что чего-то не хватает, поэтому здесь приведено полное решение указанной проблемы.

Вот класс ParkingLot с вызовом метода Allot ().

открытый класс ParkingLot {

static int MAX = 5;
static Car[] Slot = new Car[MAX];

public static void main(String[] args) {

    Slot[0] = new Car("1234", "White");
    Slot[1] = new Car("5678", "Black");

    Allot();

}

public static void Allot() {

    for (int i = 0; i < Slot.length; i++) {

        if (Slot[i] != null) {
            System.out.println(Slot[i].getNo()+" , "+Slot[i].getColor());
        }
    }
}

}

И класс Car с методами getNo () и getColor ().

открытый класс Car {

private String Number;
private String Color;

Car (String Number, String Color){
    this.Number = Number;
    this.Color = Color;

}

public String getNo(){
 return Number;   
}

public String getColor(){
    return Color;
}

}

1 голос
/ 26 июня 2010

Используя [] запись:

public static void Allot() {
    Car car;
    for (int i = 0; i <= Slot.length; i++) {
        // Get the car at this position in the array
        car = Slot[i];

        // Make sure it isn't null, since the array may not have
        // a full set of cars
        if (car != null) {
            // Use the car reference
            System.out.println(car.getNo());
        }
    }
}

(я предположил, что getNo был методом, а не свойством.)

Например, Slot[0] дает вам первый Car, из которого вы можете получить доступ к свойствам и методам Car, поэтому Slot[i] дает вам автомобиль на i -ой позиции. (Выше я использовал временную переменную для хранения машины, но вы можете использовать Slot[i].getNo() напрямую, это не имеет значения. Я просто не хотел повторять поиск в массиве, даже через HotSpot [Sun JVM] оптимизировать, даже если я сделаю.)

0 голосов
/ 07 июня 2018

вы можете создавать массивы объектов и обращаться к ним просто так

Object[] row={"xx","xcxcx"};

Object[] cotainer = {row,row,row};

for(int a=0;a<cotainer.length;a++){

    Object[] obj = (Object[])cotainer[a];

}
0 голосов
/ 01 января 2018
class Car{
    String number;
    String color;

    public Car(String number, String color) {
        this.number = number;
        this.color = color;
    }

    @Override
    public String toString() {
        return "Car{" +
                "number='" + number + '\'' +
                ", color='" + color + '\'' +
                '}';
    }
}

class Test{
    static int MAX = 5;
    static Car[] Slot = new Car[MAX];

    public static void main(String[] args) {
        Slot[0] = new Car("1234", "White");
        Slot[1] = new Car("5678", "Black");

        for (Car car : Slot)
            System.out.println(car);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...