0

为什么购买是不兼容的类型scan.next()?(我试图让用户输入购买和投标,然后使用一种方法来计算变化)。

public static void makeChange() //one method of a class
{       
    double purchase;
    double tendered;

    Scanner scan = new Scanner (System.in);

    System.out.println ("How much was the Purchase?");
    purchase = scan.next(); //why would this be an incompatible type?
    System.out.println ("Amount Tendered"); 
    tendered = scan.next();      

    System.out.println("Processing Transaction");
    int ch[] = cd.makeChange(purchase, tendered);

    .... continued
4

1 回答 1

5

因为scanner.next()返回一个字符串,如javadoc 中所述。这是检查方法何时没有按照您认为的方式执行的第一个地方。您可能打算使用scanner.nextDouble().

正如评论中所指出的,如果您的代码不仅仅是一个练习,您应该使用 BigDecimal 作为货币金额以避免四舍五入问题(双精度数不准确)。

于 2012-07-24T07:36:14.423 回答