使用循环自动化逻辑?

时间:2016-01-21 06:31:58

标签: java loops if-statement for-loop

我需要使用循环自动化下面的代码段。即使有效点达到无限数量,我也需要获得最大值

我如何在几行代码中实现它

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。

3 个答案:

答案 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循环。