我正在开发一款游戏。我是java的新手并研究过google:为什么添加int时会继续添加java
大多数情况下,它总是会增加:
STOP_DAMAGE+=1;
即使有时候,它会减去直到负面。我很烦。有时它不会增加太多。我不明白。这是我的代码:
if(isPressed==true) {
if(STOP_DAMAGE<=5) {
if(WAIT_DAMAGE>=3000) {
ENEMY_SHIP_HEALTH-=SHIP_DAMAGE_ENEMY;
STOP_DAMAGE+=1;
}
}
}
for(;WAIT_DAMAGE>=3003;) {
WAIT_DAMAGE-=WAIT_DAMAGE;//time is deducted
}
//WAIT_DAMAGE is a time int
答案 0 :(得分:1)
该行
STOP_DAMAGE+=1;
总是会添加一个,除非你有溢出,这将是令人惊讶的。
您更有可能需要使用调试器来更好地了解您的程序实际执行的操作。
顺便说一句
for(;WAIT_DAMAGE>=3003;)
{
WAIT_DAMAGE-=WAIT_DAMAGE;//time is deducted
}
与
相同if (WAIT_DAMAGE>=3003)
WAIT_DAMAGE = 0;
答案 1 :(得分:1)
int: int数据类型是32位带符号的二进制补码整数。它的最小值为-2,147,483,648,最大值为2,147,483,647(含)。对于整数值,此数据类型通常是默认选择,除非有理由(如上所述)选择其他内容。此数据类型很可能足以容纳您的程序将使用的数字,但如果您需要更宽范围的值,请使用long。
int n = 2147483647;
System.out.print( n+ 1);
上面会给你一个负值..
因此,一旦达到其最大值,它就会因为位移而从-ve值开始。