[英]How to calculate the average in OOP?
I know how to calculate the average in procedural programming, except that in OOP I don't see how to make this:我知道如何计算程序编程中的平均值,除了在 OOP 我不知道如何做到这一点:
I have 2 objects and I want to calculate the average age:我有 2 个对象,我想计算平均年龄:
class Main {
public static void main(String[] args) {
List<Player> players = new ArrayList<Player>();
players.add(new Player("Eric", 31, true));
players.add(new Player("Juliette", 28, false));
In my class Player, I have this在我的 class 播放器中,我有这个
public class Player {
public String name;
public int age;
public boolean sex;
public Player(String name, int age, boolean sex){
this.name = name;
this.age = age;
this.sex = sex;
}
In my CalculateAverage() method, I don't see how to make this?在我的 CalculateAverage() 方法中,我看不到如何做到这一点? I have a problem with my loop..我的循环有问题..
public static void CalculateAverage(List <Player> players){
int sumAge = 0;
for(Player player : players){
}
}
Method 1:方法一:
inside your loop sum all the ages and then divide the sum by total number of ages( players.size()
)在你的循环内对所有年龄求和,然后将总和除以年龄总数( players.size()
)
List<Player> players = new ArrayList<Player>();
players.add(new Player("Eric", 31, true));
players.add(new Player("Juliette", 28, false));
double sum = 0;
for(Player player : players){
sum = sum +player.age;
}
double average = sum/players.size();
System.out.println(average);
Method 2:方法二:
make use of Java 8 Streams.利用 Java 8 个流。 Convert your list to a stream( players.stream()
) then map your age to double( mapToDouble()
) then call average.将您的列表转换为流( players.stream()
)然后 map 将您的年龄翻倍( mapToDouble()
)然后调用平均值。
*NB average()
returns an optional. *NB average()
返回一个可选值。 use get( optionalAverage.get()
) to get the actual value.使用 get( optionalAverage.get()
) 获取实际值。
List<Player> players = new ArrayList<Player>();
players.add(new Player("Eric", 31, true));
players.add(new Player("Juliette", 28, false));
final OptionalDouble optionalAverage = players.stream().mapToInt(Player::getAge).average();
System.out.println(optionalAverage);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.