这是我需要帮助的代码。
if (itemAmount >= usedWithAmount) {
for (int i = 0; i < 10; i++) {
if (amountToTransfer == 6) {
usedWithAmount = i;
break;
}
amountToTransfer = itemAmount - i;
System.out.println(amountToTransfer);
}
} else if (itemAmount < usedWithAmount) {
for (int i = 0; i < 10; i++) {
if (amountToTransfer == 6) {
itemAmount = i;
break;
}
amountToTransfer = usedWithAmount - i;
}
}好吧,人们第一次就听不懂了,所以我会更深入一些。
这是用于我的游戏,你有药水。药水里有一定的药水。最后有(6)的药剂,还有6剂,(5)还有5剂,等等。
我是这样做的,所以当你在另一种药剂上使用一种药剂时,它会将剂量从药剂转移到另一种药剂,以使其充分。
所以让我说我有一个剩余5剂量的药水(表示为itemAmount),我用它在另一个还有2剂量的药水上(表示为usedWithAmount)。
我想要上面的算法做的是,使用第一个药水(ItemAmount)的值,并找出它应该转移多少剂量到另一个药水使它满(6剂量=满)。
因此,如果我使用5剂量的药剂与2剂量的药剂,5剂量的药剂应该失去4剂量,而2剂量的药剂得到4剂量,我希望amountToTransfer(在这种情况下是4)代表从第一项中移除多少剂量,并添加到第二项中。
发布于 2012-08-19 21:36:11
见my comment。您可以很容易地使用Math.min解决这个问题。
amountToTransfer = Math.min(itemAmount, 6 - usedWithAmount);这将返回任何较小的--源药水的剩余部分或填充目标药水所需的数量。
这也可以重写:
final int space = 6 - usedWithAmount;
amountToTransfer = itemAmount < space ? itemAmount : space;或者,就像大卫写的,
final int space = 6 - usedWithAmount;
if (itemAmount < space) {
amountToTransfer = itemAmount;
} else {
amountToTransfer = space;
}发布于 2012-08-19 21:32:17
不如:
// Figure out how much room is available in the one getting the transfer
amountMissing = 6 - usedWithAmount
// If it has room to hold everything, transfer it all
if (amountMissing >= itemAmount)
{
amountToTransfer = itemAmount;
}
// Otherwise, transfer as much as it can hold
else
{
amountToTransfer = amountMissing;
}https://stackoverflow.com/questions/12030048
复制相似问题