首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中具有多个类的Varargs问题

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

Stack Overflow用户
提问于 2018-12-19 09:01:37
回答 2查看 40关注 0票数 0

所以当我创建具有多个类的变量参数时,我遇到了一个问题。正如您在下面的代码中看到的,我只是尝试以随机顺序获取多个城市和地区,并尝试打印出整个州的人口。除了问题之外,我不知道如何迭代我的CAndD数组,以便将所有的种群相加在一起。

代码:

代码语言:javascript
复制
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;
    }
}

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-19 09:11:55

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

代码语言:javascript
复制
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;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2018-12-21 16:08:58

设计一个空的父类似乎并不好。在您的代码中,类City和District是相同的。我假设您想知道地点的类型(城市或地区)。更好的解决方案是将子类的所有属性移动到父类。类CitiesAndDistricts将是:

代码语言:javascript
复制
class CitiesAndDistricts {
    String name;
    int population;
    public CitiesAndDistricts(String name, int population} {
        this.name = name;
        this.population = population;
    }
}

从这个父类,您可以扩展到类City和extend,如下所示:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53843216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档