对于家庭作业,我需要获取数组acc,这是一个帐号数组,并将其内容与一些用户输入进行比较。将acc [i]与acctNum进行比较会产生错误。使用(Integer)或(int)转换为int无效。
private static int printArrayTest(Scanner bleh, Account [] acc)
{
int acctNum;
System.out.println("Account number: ");
acctNum = bleh.nextInt();
for (int i=0; i<acc.length;i++)
{
System.out.println(acc[i]);
if (acctNum == (Integer) acc[i])
return acctNum;
}
}
答案 0 :(得分:5)
您的数组似乎包含“帐户”对象。您不能将Account转换为int,因为它不是数字。您必须访问Account对象的帐号字段,可能是:
if (acctNum == acc[i].getAccountNumber())
您需要在帐户类中创建一个方法,以便您检索帐号。
答案 1 :(得分:0)
您不能将任意类型的对象(例如Account
)强制转换为任何其他任意类型,例如Integer
。转换并不意味着对象会以某种方式自动从一种类型转换为另一种类型。
强制转换所做的唯一事情是告诉编译器它不应该检查你正在投射的对象的类型 - 它应该假设对象是你说的那样。如果将Account
对象强制转换为Integer
,那么您所做的就是告诉编译器该对象是Integer
并且它不应该抱怨它。
但是当你运行程序时,JVM仍会检查转换是否有效,换句话说,它会检查你正在转换的对象是否确实属于你要转换它的类型。如果不是,则抛出ClassCastException
。这是您的程序中发生的情况,因为Account
对象不是Integer
对象。
解决方案是Memento Mori在他的回答中所写的:不要施放,而是在Account
对象上调用适当的方法。