2017-02-26 16 views
0

私が作っているゲームのプレイヤーに個人的なスコアを設定しました。 プレイヤーが勝った場合、このスコアを更新したいが、それが上がったり下がったりする量は、個人的なスコアの差によって決まる。2つのintを比較し、diffrenceを計算に使用する

public int editScore(int personalScore){ 

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

今私は両方のプレイヤーに自分の個人的なスコアを取得して割り当てられますどのくらいのポイントを決定するためにそれらを比較したい:

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

は、どのように私はこの仕事をするのだろうか?私は2人の違いの復帰が必要です。

+3

あなたは 'personalScore - partnerScore'を返す必要があると聞きました。またはそれがより大きいかどうか問題でなければ 'Math.abs(それ)'。 –

+2

あなたはこれを考えています。 2つの数字の違いを取得するには、それらの数字を使用します。私たちが知っているように、減算は[可換ではありません](https://en.wikipedia。org/wiki/Commutative_property) - 操作の順序が重要です。 –

答えて

2

それは2つのintを比較した場合、ラッパークラス整数内の関数があり、あなたが何をしたいのかという明確ではありません。

int compareResult = Integer.compare(this.getPersonalScore(), partner.getPersonalScore); 

比較関数の戻り値がでませんいずれの場合も、比較している2つの値の差に対応します。 これは、ドキュメントで説明されています 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); 

を、あなたがfuncionを比較していることを決定することによって、勝利プレーヤーを得た後、これを追加します。 は、この場合、あなたはこのような何かを行うことができます。

0

多分このような何か?

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

compareToは、単純に数字そのものを見て、最初の方が大きい場合は1を返し、-1それらが等しい場合には、第2は大きく、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、どちらも問題ありません、autoboxingのjava取引)とゲッターgetPersonalScore()を持っていて、この値を返すと仮定しています。

脇の下として、あなたの書き込みはgetPersonalScoreですが、角括弧を追加するのを忘れています。私はそれがメソッド呼び出しであると仮定しています(getで始まるため)、これらの括弧は常に最後にあります:getPersonalScore()

+0

正確に!ありがとう –

関連する問題