Java 如何计算代码的平均值
文件中有各种球队名称,另一个文件中有参加比赛的人数。我试图写一段代码,找出每个团队的平均出勤率 我希望它看起来像这个Java 如何计算代码的平均值,java,arrays,math,mean,Java,Arrays,Math,Mean,文件中有各种球队名称,另一个文件中有参加比赛的人数。我试图写一段代码,找出每个团队的平均出勤率 我希望它看起来像这个 public static double mean(double[] m) { double sum = 0; for (int i = 0; i < m.length; i++) { sum += m[i]; } return sum / m.length; } 公共静态双平均值(双[]m){ 双和=0; 对于(int i
public static double mean(double[] m) {
double sum = 0;
for (int i = 0; i < m.length; i++) {
sum += m[i];
}
return sum / m.length;
}
公共静态双平均值(双[]m){
双和=0;
对于(int i=0;i
我试着自己解决这个问题,下面是我的想法。我正试图将这两个列表合并在一起
public static String getAverageAttendance(Team team)
{
ArrayList<Match> ourList = new ArrayList(results);
ArrayList<Match> teamsAttendance = new ArrayList<Match>();
for (Match att : ourList)
{
if (att != null && att.getTeamName().equals(team.getName()))
{
teamsAttendance.add(att);
}
}
float crowd = 0;
for (Match att : teamsAttendance)
{
float multiplier = (att.getAttendance()/391);
crowd = crowd + multiplier
}
}
public静态字符串getAverageAttention(团队)
{
ArrayList ourList=新的ArrayList(结果);
ArrayList teamsAttendance=新的ArrayList();
对于(匹配收件人:我们的列表)
{
如果(att!=null&&att.getTeamName().equals(team.getName()))
{
团队管理。添加(附件);
}
}
浮动人群=0;
对于(比赛收件人:Teamstattenance)
{
浮动乘数=(att.getAttention()/391);
群组=群组+倍增器
}
}
我知道代码可能需要重做,我认为我没有正确使用float。正如你所看到的,我是一个新手,任何帮助都将不胜感激 您可以这样做:
public static String getAverageAttendance(Team team) {
double[] attendences = new doble[result.size()];
for (int i = 0; i < result.size(); i++) {
Match att = results.get(i);
if (att != null && att.getTeamName().equals(team.getName())){
attendences[i] = getAdjustedAttendence(att);
}
}
return mean(attendences);
}
public double getAdjustedAttendence(Match match) {
//whatever you do to adjust the numbers
}
public静态字符串getAverageAttention(团队){
double[]Attentenses=新的doble[result.size()];
对于(int i=0;i
不要忘记在mean()中执行错误检查,因为传入空数组会导致它抛出异常。我不再假设
结果
是一个静态列表。有了这个假设,我相信你可以这样创建你的函数:
public static String getAverageAttendance(Team team) {
double totalCrowds = 0.0;
int totalMatches = 0;
for (Match match : results) {
if (match.getTeamName().equals(team.getName())) {
totalCrowds += match.getAttendance();
totalMatches++;
}
}
double averageAttendance = totalMatches > 0 ? totalCrowds / totalMatches : 0.0;
return String.valueOf(averageAttendance);
}
这样就不需要创建额外的列表,只需在匹配项上迭代一次。我选择了double
,但如果您喜欢那种类型,也可以轻松地使用float
如果您正在使用Java 8并希望使用流:
public static String getAverageAttendance(Team team) {
return String.valueOf(results
.stream()
.filter(m -> m.getTeamName().equals(team.getName()))
.collect(Collectors.averagingDouble(Match::getAttendance)));
}
您可能需要将averagingDouble
更改为averagingInt
,或者根据您在Match::GetAttention
中的数字返回类型,更改任何适当的函数
请注意,这两个函数都遵循原始的方法签名,并返回一个字符串
。如果您可以控制此方法,我建议返回数值double
或float
类型,并允许调用方在必要时将其转换为字符串。我还建议将列表
对象作为参数传递给方法,而不是依赖静态变量,因为这会使方法更具可重用性,但我不知道您的所有用例。神奇的391
数字是什么?在您添加所有出席人数后,是否应该执行crowd/teamsatenance.size()
?运行代码时是否得到错误答案,或者您是否无法完成程序以获得平均值?