【问题标题】:Comparing two ints and using the diffrence for a calculation比较两个整数并使用差异进行计算
【发布时间】:2017-02-26 12:13:40
【问题描述】:

我已经为我正在制作的游戏中的玩家设置了个人分数。 如果玩家获胜,我想更新这个分数,但它提高或下降的数量取决于个人分数的差异。

public int editScore(int personalScore){

if(endOfGame().getResult().equals("win")){

现在我想获取两个玩家的个人分数并比较他们以确定将分配多少分:

        if(this.getPersonalScore.compareTo(partner.getPersonalScore))

我将如何完成这项工作?我需要返回两者之间的差异。

【问题讨论】:

  • 听起来你需要返回personalScore - partnerScore。或者Math.abs(that),如果哪个更大无关紧要。
  • 你想多了。要获得两个数字之间的差异,您可以 减去 它们。我们知道,减法是not commutative - 所以运算顺序很重要。

标签: java if-statement int


【解决方案1】:

不清楚你想做什么,如果是比较两个int,包装类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);

并在您获得获胜玩家后通过比较功能确定这一点。

【讨论】:

    【解决方案2】:

    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);
    

    你想要什么仍然有点不清楚。但我假设玩家有一个personalScoreint,(或Integer,两者都很好,java 处理自动装箱)和一个getter getPersonalScore(),它返回这个值。

    作为旁注,您写了getPersonalScore,但忘记添加括号。我假设它是一个方法调用(因为它以get 开头),并且这些总是在末尾有括号:getPersonalScore()

    【讨论】:

      【解决方案3】:

      也许是这样的?

      int winner = Math.max(partner.getPersonalScore(), personalScore);
      int loser = Math.min(partner.getPersonalScore(), personalScore);
      int d = winner - loser;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-03
        • 1970-01-01
        • 2022-08-07
        • 1970-01-01
        • 2020-10-10
        • 1970-01-01
        • 2020-07-25
        • 1970-01-01
        相关资源
        最近更新 更多