减少if else if子句

时间:2016-12-21 20:24:32

标签: java if-statement

抱歉,如果这是一个错误的地方提出这类问题,但我是一个完整的新手java,我想知道是否有办法使这个更紧凑:

if (PlainFlourUsed <2000)   
    System.out.println("\n0 Bags of Flour needed");
else if (PlainFlourUsed >= 2000 && PlainFlourUsed < 4000)
    System.out.println("\n1 Bag of flour needed");
else if (PlainFlourUsed >= 4000 && PlainFlourUsed< 6000)
    System.out.println("\n2 Bag's of flour needed");
else if (PlainFlourUsed >= 6000 && PlainFlourUsed < 8000)
    System.out.println("\n3 Bag's of flour needed");
else if (PlainFlourUsed >= 8000 && PlainFlourUsed< 10000)
    System.out.println("\n4 Bag's of flour needed");
else if (PlainFlourUsed >= 10000 && PlainFlourUsed < 12000)
    System.out.println("\n5 Bag's of flour needed");
else if (PlainFlourUsed >= 12000 && PlainFlourUsed< 14000)
    System.out.println("\n6 Bag's of flour needed");
else if (PlainFlourUsed >= 14000 && PlainFlourUsed < 16000)
    System.out.println("\n7 Bag's of flour needed");
else if (PlainFlourUsed >= 16000 && PlainFlourUsed< 18000)
    System.out.println("\n8 Bag's of flour needed");
else if (PlainFlourUsed >= 20000 && PlainFlourUsed < 22000)
    System.out.println("\n9 Bag's of flour needed");
else if (PlainFlourUsed >= 24000 && PlainFlourUsed < 26000)
    System.out.println("\n10 Bag's of flour needed");

编辑但使用它会给我一个分区,但我只能展示一袋面粉,如1或2.我不能有1.125的一袋面粉。只有整袋面粉

4 个答案:

答案 0 :(得分:18)

这是简单的数学:

int bags = PlainFlourUsed / 2000;
System.out.println("\n" + bags + " Bags of Flour needed");

答案 1 :(得分:2)

你可以做一些简单的事情

System.out.println("\n" + (int) PlainFlourUsed/2000+" Bags of Flour needed");

答案 2 :(得分:1)

如果您想压缩代码并仅在需要时使用复数,我建议:

int n = (int) PlainFlourUsed / 2000;
System.out.println(String.format("\n%d %s of flour used", n, (n == 1 ? "bag" : "bags")));

答案 3 :(得分:0)

@shmosei答案实际上是一种非常好的方式。

但是如果您需要使用所有条件,那么您可以删除所有>=语句中的else if条件。

if (PlainFlourUsed <2000)   
    System.out.println("\n0 Bags of Flour needed");
else if (PlainFlourUsed >= 2000 && PlainFlourUsed < 4000)
    System.out.println("\n1 Bag of flour needed");
else if (PlainFlourUsed >= 4000 && PlainFlourUsed< 6000)
    System.out.println("\n2 Bag's of flour needed");
else if (PlainFlourUsed >= 6000 && PlainFlourUsed < 8000)
    System.out.println("\n3 Bag's of flour needed");
...

可以更改为

if (PlainFlourUsed <2000)   
    System.out.println("\n0 Bags of Flour needed");
else if (PlainFlourUsed < 4000)
    System.out.println("\n1 Bag of flour needed");
else if (PlainFlourUsed< 6000)
    System.out.println("\n2 Bag's of flour needed");
else if (PlainFlourUsed < 8000)
    System.out.println("\n3 Bag's of flour needed");

这是因为如果该值小于2000,那么无论如何条件都会先进入内部。所以不需要在else if中再次检查&gt; = 2000。