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;
}
}
如果有人能帮我解决这个问题那就太好了!
请看下面的代码,我已经将 population 变量从 City 和 District 移到了父 class:
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;
}
}
设计一个空的父级class似乎不太好。在您的代码中,class 城市和地区相同。我假设您想知道地点的类型(城市或地区)。更好的解决方案是将子 class 的所有属性移动到父 class。 class CitiesAndDistricts 将是:
class CitiesAndDistricts {
String name;
int population;
public CitiesAndDistricts(String name, int population} {
this.name = name;
this.population = population;
}
}
从这位家长 class,您可以扩展到 class 城市和地区,如下所示:
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);
}
}
所以我在创建具有多个 类 的变量参数时遇到了问题。正如您在下面的代码中看到的那样,我只是试图以随机顺序获取多个城市和地区,并尝试打印出整个州的人口。除了问题是我不知道如何遍历我的 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;
}
}
如果有人能帮我解决这个问题那就太好了!
请看下面的代码,我已经将 population 变量从 City 和 District 移到了父 class:
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;
}
}
设计一个空的父级class似乎不太好。在您的代码中,class 城市和地区相同。我假设您想知道地点的类型(城市或地区)。更好的解决方案是将子 class 的所有属性移动到父 class。 class CitiesAndDistricts 将是:
class CitiesAndDistricts {
String name;
int population;
public CitiesAndDistricts(String name, int population} {
this.name = name;
this.population = population;
}
}
从这位家长 class,您可以扩展到 class 城市和地区,如下所示:
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);
}
}