Java:测试正值和负值

时间:2015-08-06 14:13:20

标签: java logic

我需要测试一场足球比赛的后期目标是否改变了结果。

该项目以一个团队为中心,并且是针对各种对手的结果。这是一项关于后期目标对获胜团队重要性的调查。

在我的目标数据库中,我列出了目标得分的时间以及他们是否被团队或反对派评分。

有一个Game Object可存储teamScoreoppScoreresultString等包含W或L的内容或D)等。

Season Object用于收集并返回结果。

当团队对某个目标进行评分时,它会在正确的分钟内递增minutes中的Int[] Gameminute[GoalTime]++

当团队对目标进行评分时,它会在正确的时间内递减minutes数据库: minute[GoalTime]++

因此,为了在任何时候找到分数,我们将以前的所有分钟加起来:

int score85=0;

for (int g = 0; g <= 85; g++) {
score85+=minutes[g];
}

如果我有score90score85,我该如何比较它们,以便只返回结果,而后期目标已经改变了结果?我希望避免在85后获得胜利球队得分的比赛,因为这对结果没有影响。我只对那些对结果产生直接影响的目标感兴趣。

这就是我所拥有的:

int difference = score90-score85;

if (difference>0 && score85<=0)
{
    if (result.equals("W") || result.equals("D"))
    {
    season.gamesWDByLateGoal++;
    }
}


  if (difference<0 && score85>=0)
  {
    if (result.equals("D") || result.equals("L")){
    season.gamesLDByLateGoal++;
    println(gameNumber);
    }
  }

我怎样才能确定我得到了正确的结果?我正在测试1500多个游戏,并且我得到了不同的答案。

1 个答案:

答案 0 :(得分:0)

目标数不是一个好的解决方案:

minute[GoalTime]++

这意味着拥有90个整数的数组(通常的足球比赛的长度为90分钟)。您正在对数据进行统计,因此您应该熟悉一些平均值。我希望你同意在一场比赛中有9个进球很多。这意味着你拥有的那些整数中有90%在大多数时候都没用。

不仅浪费内存,而且浪费时间,因为你必须逐步完成所有这些整数(在for循环中)才能找到游戏结果。

除此之外,并非每场比赛都持续90分钟。

  • 由于足球运动员像好莱坞女演员一样有报酬,他们就像 这样的和几分钟的津贴被添加到每个时期 为了弥补他们的舞台时间。
  • 可能有overtime另外2个15分钟
  • 有些规则可以缩短加班时间see golden and silver goal

考虑到这一点,将时间用作索引的想法看起来并不那么好。

最重要的是,可能会有一个penalty shoot-out,这会导致甚至没有时间关联的目标。

Further down in the article, there's this demonstration how different rating systems handle penalty goals

  

在计算欧足联系数时,俱乐部系数会忽略枪战,[53]而不是国家队系数,其中枪战获胜者获得20,000点积分:超过枪击失败者,获得10,000点积分(与平局相同但不到30,000分,直接赢得比赛。[56]在FIFA世界排名中,胜利的基础值是三分;处罚的胜利是两个;罚款和罚款是一个;损失为零。[54]国际足联在1999年至2006年期间使用的更为复杂的排名系统给予了一名出手获胜者与正常胜利相同的分数,并且输出失败者的分数与平局相同;比赛中的目标,但不是枪战,计算中考虑了因素。[57]

我强烈建议您查看不同的系统,了解哪一个对您最有意义。毕竟,如果您对获胜和失败的游戏有不同的定义,则无法与其他系统进行比较。

为了使事情进一步复杂化,目标可以有不同的“价值”。得分的目标比在家里的目标更有价值。

如果A和B之间的两个匹配如下

  • @A的家:A:1 B:1
  • @B的家:A:2 B:2

总计胜利,即使两场比赛都是平局。

我提到过室内足球了吗? =)

结论

  • 使用官方系统作为参考。如果你的系统来了 结论是游戏是平局,而官方的说法是 这是一场胜利,那么你的系统无法与任何官员相提并论 结果,因此意义非常小。确保您的系统符合官方结果。
  • 将目标存储在与团队关联的动态列表中。

最后,在单独的列表中,存储带有时间的结果。每当对目标进行评分以更改结果时,请将具有新结果的另一个结果对象添加到此列表中。您现在知道结果发生变化的所有时间,而不是整个时间轴的离散。要在任意时间点获得结果,请使用下一个较小的时间戳从该列表中获取结果。