0
私は戦闘シミュレータを書いています。私の攻撃者クラスは攻撃を開始し、ディフェンダークラスはそれをブロックすることになっています。マネージャは結果を計算してプリントする私のメインクラスです。私の問題は、私のhighRatio、mediumRatio、lowRatio変数です。それらが1に等しくない場合、それらのすべてがゼロに設定される。何が起こっている可能性についての任意のアイデア?論理エラー?潜水2 intそれは浮動小数点になります
//ディフェンダークラス
public int defenseSelector(int highAtkCounter, int mediumAtkCounter, int lowAtkCounter, int rounds, int roundCounter)
{
Random defenseTypeGenerator;
int defense = 0;
float highRatio;
float mediumRatio;
float lowRatio;
defenseTypeGenerator = new Random();
int defenseType = defenseTypeGenerator.nextInt(MAX_ROUNDS) + 1;
highRatio = highAtkCounter/roundCounter;
mediumRatio = mediumAtkCounter/roundCounter;
lowRatio = lowAtkCounter/roundCounter;
if(roundCounter > 3 && roundCounter <= rounds) //AI portion
{
if (highRatio > mediumRatio && highRatio > lowRatio)
{
defense = HIGH;
}
else if (mediumRatio > highRatio && mediumRatio > lowRatio)
{
defense = MEDIUM;
}
else if (lowRatio > highRatio && lowRatio > mediumRatio)
{
defense = LOW;
}
else
{
System.out.println("AI ERROR ratios " + highRatio + " " + mediumRatio + " " + lowRatio);
System.out.println("AI ERROR atkCounters " + highAtkCounter + " " + mediumAtkCounter + " " + lowAtkCounter);
System.out.println("AI ERROR rCounters " + roundCounter);
//マネージャクラス整数の整数結果とJavaで
while(roundCounter <= rounds)
{
int attack = theAttacker.attackSelector(high, medium, low);
int highAtkTracker = theAttacker.countHighAtks(attack);
System.out.println("DEBUG " + attack);
System.out.println("DEBUG " + highAtkTracker);
int mediumAtkTracker = theAttacker.countMediumAtks(attack);
System.out.println("DEBUG " + attack);
System.out.println("DEBUG " + mediumAtkTracker);
int lowAtkTracker = theAttacker.countLowAtks(attack);
System.out.println("DEBUG " + attack);
System.out.println("DEBUG " + lowAtkTracker);
highAtkCounter = highAtkCounter + highAtkTracker;
mediumAtkCounter = mediumAtkCounter + mediumAtkTracker;
lowAtkCounter = lowAtkCounter + lowAtkTracker;
int defense = theDefender.defenseSelector(highAtkCounter, mediumAtkCounter, lowAtkCounter, rounds, roundCounter);
ありがとうございました!!!あなたが提案した行を編集する代わりに、私はdefenderクラスのものを編集しました。 highRatio =(float)highAtkCounter/roundCounter; mediumRatio =(float)mediumAtkCounter/roundCounter; lowRatio =(float)lowAtkCounter/roundCounter; –
@KhalidJomha * "あなたが提案した行を編集するのではなく、防衛士のクラスで編集した行を編集する代わりに" *あなたのコード、あなたの選択...; o)しかし、浮動小数点演算にはデジタル化エラーがあるかもしれません。通常これはゲームの厳しいものではありません... –
デジタル化エラーとは何ですか? –