【问题标题】:converting arrays of primitive double values to references to objects将原始双精度值数组转换为对对象的引用
【发布时间】:2011-03-09 23:58:28
【问题描述】:

我正在尝试将原始双精度值数组转换为对象。结果我收到“类型不匹配错误”

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");
    }


}

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

【问题讨论】:

  • @Neil - 我希望我不知道。

标签: java arrays


【解决方案1】:

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

private CreditCard[] purchases;

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

purchases[numPurchases] = amount;

但是你刚刚告诉编译器purchases只允许包含CreditCards!

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

假设您有以下课程:

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

现在你可以这样做了:

purchases[numPurchases] = new CreditCard(amount);

...因为您放入数组的东西具有正确的类型

顺便说一句,考虑将您的课程重命名为CreditCardPurchase,如果这是它真正代表的内容。你的班级名称应该说明它是什么。如果它进入purchases 数组,那么它可能是购买,而不是信用卡本身。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-20
      • 2015-06-12
      • 2015-11-24
      • 2012-06-11
      • 2015-02-12
      • 1970-01-01
      • 2017-02-24
      • 2011-07-07
      相关资源
      最近更新 更多