如何缩短许多if语句

时间:2017-07-06 21:46:22

标签: java android android-studio

我对编程很新,不确定是否有任何方法可以缩短此代码。基本上,为x输入的任何值都决定了'。'之后的#的数量。

    String x = mSharedPreferences.getString("title", "3");
    if (x.equals("1")){
        df = new DecimalFormat("#.#");
    }
    else if(x.equals("2")){
        df = new DecimalFormat("#.##");
    }
    else if(x.equals("3")){
        df = new DecimalFormat("#.###");
    }
    else if(x.equals("4")){
        df = new DecimalFormat("#.####");
    }

3 个答案:

答案 0 :(得分:8)

您可以通过调用setMaximumFractionDigits()完全删除所有if语句:

DecimalFormat df = new DecimalFormat("#");
df.setMaximumFractionDigits(Integer.parseInt(x));

如果您想要"0.000"之类的格式,致电setMinimumFractionDigits()

int decimals = Integer.parseInt(x);
DecimalFormat df = new DecimalFormat("0");
df.setMinimumFractionDigits(decimals);
df.setMaximumFractionDigits(decimals);

指定"#.###""0.000"这样的模式实际上只是调用DecimalFormat的各种setter methods的简写。

答案 1 :(得分:0)

  switch (x) {
            case "1":  xx;
                     break;
            case "2":  xx;
                     break;
            case "3":  xx;
                     break;
            case "4":  xx;
                     break;
            default: 
                     break;
        }

使用switch语句:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

答案 2 :(得分:-2)

switch case不会提供与if完全相同的功能,否则if,else实际上。它提供了微妙的不同功能。

我看到这种缩减的唯一方法是使用一个数组,然后进行包含检查,检查被检查的项目是否在可能的答案数组中。

Psuedo代码是:

if ["1", "2", "3", "4"].include?(x) end