这可能是一个非常愚蠢的问题,但我已经被这个问题困扰了好几天
所以你有一个int树,int木头和现金。树木将被转换成木材,木材将被转换为现金。
你还有一个int树每秒,int木材每秒和现金每秒。
每秒的每一棵树都将添加到树中。每秒钟的木材将被添加到木材中,并从树木中减去。(你需要树来制造木材)。每秒钟的现金将被添加到从木材中减去的现金中。(木材会变成现金)。
每一个.每秒的值都有自己的值。还有树木,木材现金有一个最大值,不能低于0。
那么,如何建立一个每秒都能完成这一切的系统呢。
我知道谁应该做一个每秒钟运行一次的运行方法。
所以你必须这样做:
Trees += treespersecond
Trees -= woodpersecond
Wood += woodpersecond
Wood -= cashpersecond
Cash += cashpersecond
但现在,这些值可以高于其最大值,也可以低于零。如何解决这个问题:如何仍然保持值之间的限制
您尝试使用if-statement
了吗?
if (Trees < MAX_TREES) {
Trees += treespersecond;
}
if (Wood < MAX_WOOD && Trees > 0) {
Trees -= woodpersecond;
Wood += woodpersecond;
}
if (Cash < MAX_CASH && Wood > 0) {
Wood -= cashpersecond;
Cash += cashpersecond;
}
要分别处理下溢和溢出,可以将您的值与Integer.MIN_value和Integer.MAX_value.进行比较
我认为在你的情况下,你不应该为树、现金等注册0以下的资源。
Java通过赋予变量最大值来自动处理溢出:
int counter = 999999999999999;
if (counter > Integer.MAX_VALUE) {
counter = Integer.MAX_VALUE;
}
如果您确信达到了极限,可以使用BigInteger。
对于资源的最大值,模式是相同的:一个简单的if语句。
int trees = 0;
int treesPerSecond = 10;
int maxTrees = 100;
trees += treesPerSecond;
if (trees > maxTrees) {
trees = maxTrees;
}
else if (trees < 0) {
trees = 0;
}