将String拆分为String []一段时间但返回一个空数组

时间:2012-05-03 04:04:05

标签: java arrays string split floating-point

好吧也许我只需要第二双眼睛。

我有一个浮动,我变成了一个字符串。然后我想用它的周期/小数将其拆分,以便将其作为货币表示。

继承我的代码:

float price = new Float("3.76545");
String itemsPrice = "" + price;
if (itemsPrice.contains(".")){
    String[] breakByDecimal = itemsPrice.split(".");
    System.out.println(itemsPrice + "||" + breakByDecimal.length);
    if (breakByDecimal[1].length() > 2){
        itemsPrice = breakByDecimal[0] + "." + breakByDecimal[1].substring(0, 2);
    } else if (breakByDecimal[1].length() == 1){
        itemsPrice = breakByDecimal[0] + "." + breakByDecimal[1] + "0";                         
    }                           
}

如果你拿这个并运行它,你会在第6行(在上面的代码中)得到一个数组索引越界错误,关于小数后面没有任何内容。

实际上在第5行,当我打印出数组的大小时,它是0。

对于他们而言,这些都是荒谬的错误,而不是我只是忽视的东西。

就像我说的那样,另外一双眼睛正是我所需要的,所以在指出一些对你来说显而易见的事情时请不要粗鲁,但我忽略了它。

提前致谢!

5 个答案:

答案 0 :(得分:19)

split使用正则表达式,其中“。”意味着匹配任何角色。你需要做什么

"\\."

编辑:修复,感谢评论者和编辑

答案 1 :(得分:0)

改为使用小数格式:

DecimalFormat formater = new DecimalFormat("#.##");
System.out.println(formater.format(new Float("3.76545")));

答案 2 :(得分:0)

我没有在java上工作太多,但在第2行,也许价格没有转换为字符串。 我在C#工作,我会用它:    String itemsPrice =“”+ price.ToString();

也许您应该首先明确地将价格转换为字符串。 因为,它没有被转换,字符串只包含“”而没有“。”,所以没有拆分和扩展名arrayOutOfBounds错误。

答案 3 :(得分:0)

如果您想以价格形式使用NumberFormat。

Float price = 3.76545;
Currency currency = Currency.getInstance(YOUR_CURRENCY_STRING);
NumberFormat numFormat = NumberFormat.getCurrencyInstance();
numFormat.setCurrency(currency)
numFormat.setMaximumFractionDigits(currency.getDefaultFractionDigits());
String priceFormatted = numFormat.format(price);
System.out.println("The price is: " + priceFormatted);

YOUR_CURRENCY_STRING是您正在处理的货币的ISO 4217货币代码。

此外,以非精确格式(例如浮点)表示价格通常是个坏主意。你应该使用BigDecimal或Decimal。

答案 4 :(得分:0)

如果您想自己处理,请尝试以下代码:

public static float truncate(float n, int decimalDigits) {
    float multiplier = (float)Math.pow(10.0,decimalDigits);
    int intp = (int)(n*multiplier);
    return (float)(intp/multiplier);
}

并获取截断的价格:

float truncatedPrice = truncate(3.3654f,2);
System.out.println("Truncated to 2 digits : " + truncatedPrice);