将原始double值的数组转换为对象的引用

时间:2011-03-09 23:58:28

标签: java arrays

我正在尝试将原始double值的数组转换为对象。结果我得到了“类型不匹配错误”

private double[]purchases;

private CreditCard[]purchases;

然后当我尝试向数组添加值

public void purchase(double amount)throws Exception
{
    if (numPurchases<purchases.length)
        if (amount >0 )
            if(amount+balance<=creditLimit)
                if( GregorianCalendar.getInstance().getTimeInMillis()<=expDate.getTimeInMillis())
                    {
                     balance+=amount;

                     purchases[numPurchases]= amount;
                     numPurchases++;

                  }
                else
                {
                    throw new Exception("card expired");
                }
            else{
                throw new Exception("insufficient credit");
                }
        else{
            throw new Exception("invalid amount");

        }
    else{
        throw new Exception("exceeded number of allowed purchases");
    }


}

错误消息显示金额的类型不匹配“无法从double转换为CreditCard 如何更正代码以允许我向阵列添加购买金额?

2 个答案:

答案 0 :(得分:1)

您需要创建一个CreditCard实例并将其添加到您的数组

  CreditCard creditCard = new CreditCard();
  creditCard.setAmount(amount);
  purchases[numPurchases]= creditCard;

答案 1 :(得分:1)

这里的一般要点是您已定义purchases,因此它只能包含CreditCard个实例:

private CreditCard[] purchases;

您在此处指定的类型控制您以后允许放入的内容。然后,您尝试将double放入数组中:

purchases[numPurchases] = amount;

但您刚刚告诉编译器purchases只允许包含CreditCard s!

您需要先将double包裹在CreditCard个实例中。

想象一下,你有以下课程:

public class CreditCard {
    private double amount;
    public CreditCard(double amount) {
        this.amount = amount;
    }
}

现在你可以这样做:

purchases[numPurchases] = new CreditCard(amount);

...因为您放入数组的内容具有正确的类型

另外,请考虑将您的课程重命名为CreditCardPurchase,如果这是它真正代表的内容。你的班级名称应该说明是什么。如果它进入purchases阵列,则可能是购买,而不是信用卡本身。