我需要使用循环自动化下面的代码段。即使有效点达到无限数量,我也需要获得最大值
我如何在几行代码中实现它
if (availPoints < 500 ) {
pointsMax = 500;
MoneyMax = 25;
}
else if (availPoints < 1000 ) {
pointsMax = 1000;
MoneyMax = 50;
}
else if (availPoints < 1500 ) {
pointsMax = 1500;
MoneyMax = 75;
}
更新
假设 availPoint 是用户从1到1000000得分的点(也是无限的)。每500点就是一个Slot。如果点进入下一个插槽。最大值 pointMax 必须增加500&amp; MoneyMax 25。
答案 0 :(得分:0)
即使有效点达到无限,我也需要获得最大值 编号
这在编程方面真的不太好!你必须停在某个地方。虽然如果你必须循环到无限(在我的术语中,非常大的数字),你总是可以使用while(true){} LOOP
和适当的 break 语句。
如果您可以更清楚地了解您希望支持哪种方案,那么我们就可以更清楚了。否则类似的东西应该适合你 - (伪代码 - 不要在没有正确理解的情况下尝试)
long maxPoints = 0;
double MoneyMax = 0;
while(true) {
if((availPoints == REALLY BIG MAGIC NUMBER) || (SOME OTHER CONDITION)){
maxPoints += 500;
MoneyMax += 25;
}
}
虽然如我所说,你必须选择一些基于你将停止的条件。如果您的逻辑永远不会通过应用程序更改,您可以将值存储在数据库中并在需要时使用它们。
希望这有帮助。!
答案 1 :(得分:0)
它不需要循环。
for (int availPoints = 400; availPoints < 2000; availPoints += 200) {
int rank = availPoints / 500;
int pointsMax = (rank + 1) * 500;
int MoneyMax = (rank + 1) * 25;
System.out.printf("availPoints %d -> pointMax=%d MoneyMax=%d%n",
availPoints, pointsMax, MoneyMax);
}
结果:
availPoints 400 -> pointMax=500 MoneyMax=25
availPoints 600 -> pointMax=1000 MoneyMax=50
availPoints 800 -> pointMax=1000 MoneyMax=50
availPoints 1000 -> pointMax=1500 MoneyMax=75
availPoints 1200 -> pointMax=1500 MoneyMax=75
availPoints 1400 -> pointMax=1500 MoneyMax=75
availPoints 1600 -> pointMax=2000 MoneyMax=100
availPoints 1800 -> pointMax=2000 MoneyMax=100
答案 2 :(得分:0)
如果你想使用难以置信的大数字,我建议导入java.math.BigInteger
这里有一些代码可以使用循环来查找pointsMax和MoneyMax。
for (pointsMax = new BigInteger("500"), MoneyMax = new BigInteger("25");
pointsMax.compareTo(availPoints) != 1;) {
pointsMax = pointsMax.add(new BigInteger("500"));
MoneyMax = MoneyMax.add(new BigInteger("25"));
}
编辑:将它全部集成到一个循环中。另外,确保availPoints也是BigInteger。
编辑2:进入for循环。