我已经为我正在制作的游戏中的玩家设置了个人得分。 如果玩家获胜,我想更新此分数,但是它增加或减少的数量取决于个人分数的差异。
public int editScore(int personalScore){
if(endOfGame().getResult().equals("win")){
现在我想让两位球员获得他们的个人得分并进行比较以确定将分配多少分数:
if(this.getPersonalScore.compareTo(partner.getPersonalScore))
我将如何使这项工作?我需要回报两者之间的差异。
答案 0 :(得分:2)
不清楚你想要做什么,如果是比较两个整数,那么包装类中有一个函数Integer:
int compareResult = Integer.compare(this.getPersonalScore(), partner.getPersonalScore);
比较函数返回值在任何情况下都不会与您要比较的两个值之间的差异相对应。 这在文档中解释: https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#compareTo(java.lang.Integer)
通常人们会解释compareTo()对于较小的而返回-1,对于较大的则返回+1,但这不是真的。合同规定将返回小于0 或大于0 的值。
对于两者之间的差异,你必须依靠良好的老式数学。 在这种情况下,你可以这样做:
int difference = Math.abs(int1 - int2);
并通过确定比较功能获得获胜玩家后添加此项。
答案 1 :(得分:1)
compareTo
只需查看数字本身,如果第一个更大则返回1,如果第二个更大则返回-1,如果第二个更大则返回0:https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#compareTo(java.lang.Integer)
您希望了解这些数字的不同之处,并将其添加到您的个人得分中。
所以你可以在玩家的课程中做以下事情:
int difference = this.personalScore - partner.getPersonalScore(); // positive if your score is greater, else negative or 0
editScore(this.personalScore + differece);
关于你想要什么仍然有点不清楚。但我假设播放器有一个personalScore
int
,(或Integer
,两者都很好,java处理自动装箱)和一个getter getPersonalScore()
,它返回这个值。
作为旁注,您写了getPersonalScore
,但忘记添加括号。我假设它是一个方法调用(因为它以get
开头),并且它们总是在末尾有括号:getPersonalScore()
。
答案 2 :(得分:0)
也许是这样的?
int winner = Math.max(partner.getPersonalScore(), personalScore);
int loser = Math.min(partner.getPersonalScore(), personalScore);
int d = winner - loser;