gpt4 book ai didi

java : better way of doing this than using if and else

转载 作者:行者123 更新时间:2023-12-01 06:54:05 25 4
gpt4 key购买 nike

我有一个要求,取决于 map 的特定键值,我需要格式化输出。

例如,如果其值大于 1,则只需在该值后显示 2 位小数(12.23) 否则如果它的值小于1,我需要在它后面显示4位小数。

我已经编写了工作正常的代码,但我正在寻找更好的方法来执行此操作(基本上我不喜欢代码中的 if else 条件)

这是我的程序,根据最后一个属性键值我正在格式化输出

package com;

import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class CustValues {

public static void main(String args[]) {

Map valuesMap = new HashMap();

valuesMap.put("mktCap", "12.4d");
valuesMap.put("last", "0.4344");
valuesMap.put("avgvalue", "34.55");
valuesMap.put("bidprice", "44.44");

Iterator<String> iterator = valuesMap.keySet().iterator();

while (iterator.hasNext()) {
String name = iterator.next().toString();

String value = (String) valuesMap.get(name);

if (name.equals("last")) {

String result = "";

double d = Double.parseDouble(value);

if (d > 1) {
result = formatNumber(value, 2);
} else {
result = formatNumber(value, 4);
}

System.out.println(result);
}

}

}

public static String formatNumber(String s, int decPts) {
double d = Double.parseDouble(s);

if (2 == decPts)
return new DecimalFormat("#,###,###,##0.00").format(d);
else if (0 == decPts)
return new DecimalFormat("#,###,###,##0").format(d);
else if (3 == decPts)
return new DecimalFormat("#,###,###,##0.000").format(d);
else if (4 == decPts)
return new DecimalFormat("0.0000").format(d);
return String.valueOf(d);

}

}

最佳答案

您可以创建一个Map<Integer, DecimalFormat> formats (或者 List<DecimalFormat> ,如果您愿意的话)。然后formatNumber()只需调用 formats.get(decPts)获得正确的格式。

关于java : better way of doing this than using if and else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17035035/

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