如何解决“operator *不能应用于java.lang.string”?

时间:2016-01-30 12:59:05

标签: java android

我一直在尝试将值转换为十进制,例如RM108.00。我用过   方法value = String.format("%.2f", curProduct.price);并且它有效,   但是当我想要   它说,申请value * ShoppingCartActivity.getProductQuantity(curProduct)   operator * cannot applied to java.lang.string。我该如何解决这个问题   问题?我应该如何将总价格变为2位小数?

  item.productPrice = (TextView) convertView
                .findViewById(R.id.textViewTotal);

  value = String.format("%.2f", curProduct.price);

    if (mShowPrice) {
        item.productPrice.setText("Total Price: " +  
  String.valueOf(curProduct.price * 
  ShoppingCartActivity.getProductQuantity(curProduct)));
    } else{
        item.productPrice.setText("RM" + String.valueOf(value));
    }

2 个答案:

答案 0 :(得分:2)

这意味着以下两种方法之一是字符串,而不是数字:

  • curProduct.price
  • ShoppingCartActivity.getProductQuantity(curProduct)

您可以使用以下代码将它们转换为整数(或浮点数,如果其中有小数):

  • Integer.parseInt(curProduct.price);
  • Float.parseFloat(curProduct.price);

可能还值得查看这些值的定义位置,并确保尽可能使用整数/浮点数,因为转换可能需要一些时间。应始终将整数用于整数(如果它们不是非常大),则应使用浮点数或双精度数作为十进制数。除非你确切知道自己在做什么,否则不要使用字符串作为数字!

答案 1 :(得分:1)

这是因为String.format()为您提供了格式化的String,而不是您期望的任何其他格式化数据类型,并且您无法在字符串上操作算术运算符(例如+)。为什么不尝试使用

将所有字符串解析为数据类型
    {li> Double.parseDouble(value) double {li> Float.parseFloat(value) float {li> Integer.parseInt(value) int

然后执行算术运算。