简单和智能金额字符串/int使用java



基本上我是与一个游戏工作,所以我想要一个简单的方法来确定项目数量。

例如,我正在创建一个ArrayList<Item>();,我正在识别如下项目:

//Item(itemId, itemAmount);
new Item(ItemsList.COINS, 1_000_000);//this is 1m of coins
new Item(ItemsList.FISH, 2000);//this is 2k of fish

我想要一种更简单的方法,而不是像

那样写金额
new Item(ItemsList.COINS, Amounts.1M);
new Item(ItemsList.FISH, Amounts.2k);`

像这样的,我想指导我如何创建类的数额,并继续关于它?

当然,我不会创建一个枚举与所有的值,什么是做这个任务的聪明的方式。请帮助我,谢谢!

您可以尝试这样做:

class Amounts {
public static int k(int amount){
return amount * 1_000;
}

public static int M(int amount){
return amount * 1_000_000;
}

(...)
}

然后你可以这样使用:

new Item(ItemList.COINS, Amounts.M(1));
new Item(ItemList.FISH, Amounts.k(2));
然而,我个人更喜欢使用常量(并在三位数字后插入_),如:
new Item(ItemList.COINS, 1_000_000);

或者是

new Item(ItemList.COINS, 1 * Amounts.MILLION);

(并在Amounts类中定义一个静态常数public static int MILLION = 1_000_000;)

您可以使用下面的函数将数字转换为您的格式,并可以在您的代码中使用,根据您的要求进行一些更改-

public static String formatNumber(double value) {
String suf = " kmbt";
NumberFormat formatter = new DecimalFormat("#,###.#");
int power = (int)StrictMath.log10(value);
value = value/(Math.pow(10,(power/3)*3));
String result =formatter.format(value);
result  = result  + suf.charAt(power/3);
return result .length()>4 ?  result .replaceAll("\.[0-9]+", "") : result ;
}

相关内容

  • 没有找到相关文章

最新更新