gpt4 book ai didi

java - 避免java中大量的if-else语句

转载 作者:行者123 更新时间:2023-12-02 20:35:24 25 4
gpt4 key购买 nike

所以我正在做练习测试,这就是问题:

编写一个 Java 方法,该方法采用一个 double 值 pay 作为参数并进行打印将与输入的工资值相对应的税率转换为标准输出。使用下表确定税率。 (6分)

缴纳10万以上,税率为40%

缴纳6万以上10万以下,税率为30%

缴纳3万以上6万以下,税率为20%

缴纳金额超过15,000且小于或等于30,000,税率为10%

缴纳金额超过5000元且小于等于15000元,税率为5%

如果工资小于或等于5,000,税率为0

这是我编写的代码,可以运行:

public class Two {

public static void main(String[] args){
double j= Double.parseDouble(args[0]);
Two.taxrate(j);}

public static void taxrate(double pay)
{
if (pay> 100000) {System.out.println(pay*.4);}
else if (pay>60000) {System.out.println(pay*.3);}
else if (pay>30000) {System.out.println(pay*.2);}
else if (pay>15000) {System.out.println (pay*.1);}
else if (pay>5000) {System.out.println(pay*.05);}
else System.out.println(0.0);
}}

我想知道的是:这是回答这个问题的最佳方式吗?我们已经学会了如何设计数据类型,这个问题看起来很简单。我觉得我忽略了一些东西。

最佳答案

正如 EJP 所建议的,您需要一个工资与税率的“表”。在完整的应用程序中,此信息可能会存储在数据库中而不是内存中,但是要获得介于静态定义和完整规模数据库之间的内容,则需要使用Map。具体来说,使用 NavigableMap 将允许非常简单地访问此类计算:

NavigableMap<Double, Double> payToTaxRate = new TreeMap<Double, Double>();

// e.g., loaded from a file:
payToTaxRate.put(100000, 0.4);
payToTaxRate.put(60000, 0.3);
payToTaxRate.put(30000, 0.2);
payToTaxRate.put(15000, 0.1);
payToTaxRate.put(5000, 0.05);
payToTaxRate.put(Double.MIN_VALUE, 0);

System.out.prinln(pay * payToTaxRate.floorEntry(pay).getValue());

当然,这对于赋值来说是多余的,并且 if 语句可能比映射的开销更快。然而,在一个税级逐年增加的世界中(谢天谢地,并不经常增加),像上面这样的更动态的方法是有帮助的。

关于java - 避免java中大量的if-else语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22471327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com