我对编程很新,不确定是否有任何方法可以缩短此代码。基本上,为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("#.####");
}
答案 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