如果我有三个名为 car 的对象数组,并且说该类具有以下实例变量:
- 字符串车名;
- int numberOfDoors;
这就是我的 main 使用数组的样子:
car[] volkswagen2016Array = new car[10];
car[] volkswagen2017Array = new car[10];
car[] volkswagen2018Array = new car[10];
如果 carName 在所有这些数组中都相同,我如何形成 for 循环或 foreach 循环来遍历所有这些数组并对 numberOfDoors 变量求和? 谢谢。
编辑:我尝试过的:
for (car a : volkswagen2016Array) {
if (a == null) {
break;
} else {
String carName = a.getCarName(); // a gettter function inside the class
if (a.getCarName().equalsIgnoreCase(carName)) {
doorSum += a.getDoorNum(); //doorSum is an int variable inside main, int doorSum = 0;
}
}
}
最佳答案
因为你需要迭代 3 个数组,如果 3 个 Car
数组大小相同,for loop
优于 for each
int sum = 0;
for(int i=0; i<volkswagen2016Array.length; i++) {
if(volkswagen2016Array[i].getCarName().equals(carName)) {
sum += volkswagen2016Array[i].getNumberOfDoors();
}
if(volkswagen2017Array[i].getCarName().equals(carName)) {
sum += volkswagen2017Array[i].getNumberOfDoors();
}
if(volkswagen2018Array[i].getCarName().equals(carName)) {
sum += volkswagen2018Array[i].getNumberOfDoors();
}
}
通过使用 java-8 流
int sum = IntStream.range(0, volkswagen2016Array.length)
.map(i->Stream.of(volkswagen2016Array[i],volkswagen2017Array[i],volkswagen2018Array[i])
.filter(c->c.getName().equals(carName)).mapToInt(Car::getNumberOfDoors).sum()).sum();
关于java - 对具有相同特定实例变量的对象 [在对象数组内] 的实例变量求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55197089/