Проблема с Varargs с несколькими классами в Java - PullRequest
0 голосов
/ 19 декабря 2018

Поэтому у меня возникла проблема при создании переменных аргументов с несколькими классами.Как вы можете видеть из приведенного ниже кода, я просто пытаюсь взять в нескольких городах и районах в случайном порядке и попытаться распечатать население всего штата.За исключением проблемы, я понятия не имею, как перебрать мой массив CAndD, чтобы сложить все популяции вместе.

Код:

public class Main {
    public static void main(String args[]) {
        State S = new State("Florida", new District("Miami-Dade", 2752000),
                new City("Miami", 463347),
                new City("Tampa", 385430),
                new District("Broward", 1936000));
        System.out.println("The Population is: " + S.getPopulation());
    }
}

class CitiesAndDistricts {

}

class City extends CitiesAndDistricts{
    String name;
    int population;

    public City(String name, int population) {
        this.name = name;
        this.population = population;
    }
}

class District extends CitiesAndDistricts{
    String name;
    int population;

    public District(String name, int population) {
        this.name = name;
        this.population = population;
    }
}

class State {
    String name;
    int population;
    CitiesAndDistricts[] CAndD;

    public State(String name, CitiesAndDistricts ... entities) {
        this.name = name;
        CAndD = entities;
        for(int i = 0; i < CAndD.length; i++) {
            this.population += CAndD[i].population;
        }
    }

    public int getPopulation() {
        return population;
    }
}

Если кто-нибудь может помочь мне решить эту проблемуэто было бы здорово!

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Проектирование пустого родительского класса не очень хорошо.В вашем коде класс City и District совпадают.Я предполагаю, что вы хотите знать тип места (город или район).Лучшее решение - переместить все свойства дочернего класса в родительский класс.Класс CitiesAndDistricts будет:

class CitiesAndDistricts {
    String name;
    int population;
    public CitiesAndDistricts(String name, int population} {
        this.name = name;
        this.population = population;
    }
}

Из этого родительского класса вы можете перейти к классу Город и Район, как показано ниже:

class City extends CitiesAndDistricts{
    public City(String name, int population) {
        super(name, population);
    }
}

class District extends CitiesAndDistricts{
    public District(String name, int population) {
        super(name, population);
    }
}
0 голосов
/ 19 декабря 2018

Пожалуйста, посмотрите на приведенный ниже код, я переместил переменную совокупности из города и района в родительский класс:

public class Main {
    public static void main(String args[]) {
        State S = new State("Florida", new District("Miami-Dade", 2752000),
                new City("Miami", 463347),
                new City("Tampa", 385430),
                new District("Broward", 1936000));
        System.out.println("The Population is: " + S.getPopulation());
    }
}

class CitiesAndDistricts {
    int population;
}

class City extends CitiesAndDistricts{
    String name;


    public City(String name, int population) {
        this.name = name;
        this.population = population;
    }
}

class District extends CitiesAndDistricts{
    String name;

    public District(String name, int population) {
        this.name = name;
        this.population = population;
    }
}

class State {
    String name;
    int population;
    CitiesAndDistricts[] CAndD;

    public State(String name, CitiesAndDistricts ... entities) {
        this.name = name;
        CAndD = entities;
        for(int i = 0; i < CAndD.length; i++) {
            this.population += CAndD[i].population;
        }
    }

    public int getPopulation() {
        return population;
    }
}
...