关于用户输入的BigDecimal计算出错

时间:2011-08-05 15:16:09

标签: java while-loop bigdecimal value-of

我有这个想法,我希望收银系统能够在用户输入商品的成本价格和数量时计算商品的总数。

这似乎有效,但后来引发了我的主要问题 - 我想让用户在说出10笔交易后输入字母“T”,以找出当天的总收入。

我尝试在计算中使用带有BigDecimal数学类的for循环。 我的计算中的'valueOf'字样有错误。 Eclipse一直试图将我的值更改为“long”&我很确定这不对。

我的解释并不令人惊讶所以我会给你我写的代码并在我的错误所在的位置旁边放置评论..

 try{
    Scanner in = new Scanner (System.in);       
    String t = "T";
    int count;

    for (count = 1;count<=10;count++){
           System.out.println("\n\nValue of Item " + count + " :");
       BigDecimal itemPrice = in.nextBigDecimal();
       System.out.println("Quantity of item " + count + " :");
       BigDecimal itemQuantity = in.nextBigDecimal();
       BigDecimal itemTotal = (BigDecimal.valueOf(itemPrice).multiply // error here
                                  (BigDecimal.valueOf(itemQuantity))); // error here
           System.out.println("\nTotal for item(s): £" + itemTotal); 
       count++;

           while (t == "T"){
       BigDecimal amountOfItems = (BigDecimal.valueOf(itemTotal).divide // error here
                                      (BigDecimal.valueOf(itemQuantity))); // error here 
       BigDecimal totalTakings = (BigDecimal.valueOf(itemTotal).multiply // error here
                                     (BigDecimal.valueOf(amountOfItems))); // error here
       System.out.println("The Total Takings For Today is £" + totalTakings + " " );

     }
    }  
   }
  }
 }

就像我说的那样,eclipse用来显示错误的'红线'只在我的BigDecimal计算中的单词“valueOf”下。

任何帮助都会很棒,因为我正在撕扯我的头发!

感谢名单,

维尼。

1 个答案:

答案 0 :(得分:2)

没有方法BigDecimal.valueOf(BigDecimal)itemPriceitemQuantity 已经 BigDecimal值 - 您不需要任何转化:

BigDecimal itemTotal = itemPrice.multiply(itemQuantity);
编辑:好的,所以上面解决了你的立即问题,但你也得到了:

while (t == "T")
{
    // Loop that never changes the value of t
}

这有两个问题:

  • 循环将始终永久执行,根本不执行,或继续执行直到抛出异常,因为循环条件永远不会改变,因为您没有更改t的值。我的猜测是你想要t = System.in.readLine() ......
  • 您在这里比较两个字符串引用,而我怀疑您想比较它们的,例如

    while (t.equals("T"))