我正在尝试将原始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 如何更正代码以允许我向阵列添加购买金额?
答案 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
阵列,则可能是购买,而不是信用卡本身。