繁体   English   中英

Java中具有多个类的Varargs的问题

[英]Issue with Varargs with multiple classes in Java

所以在创建具有多个类的变量参数时遇到问题。 正如您在下面的代码中看到的那样,我只是试图以随机顺序进入多个城市和地区,并尝试打印出整个州的人口。 除了问题是,我不知道如何遍历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;
    }
}

如果有人可以帮助我解决这个问题,那就太好了!

请看下面的代码,我已经将人口变量从城市和地区移到了父类:

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;
    }
}

设计一个空的父类似乎不好。 在您的代码中,类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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM