我创建了一个包含3个不同人员“检查帐户信息”的数组,如果用户的输入与客户的其中一个匹配,我需要能够在我的代码的其他部分使用客户的其余数据。帐号“在我的数组中。
例如,如果用户输入12345678,我的代码将需要搜索数组,将该输入与“Jon”帐户匹配,然后将Jon的信息用于代码中的其他内容。我基本上是在写ATM软件。
我的问题在于将帐号与用户的输入相匹配。帐号是“cac”数组各部分的最后一个元素。
有人能告诉我我做错了什么吗?
CheckingAccountCustomer[] cac = new CheckingAccountCustomer[3]; // array of checking account customers, names, pins, balances, account numbers
cac[0] = new CheckingAccountCustomer("Joe", 1234, 5000, 11111111);
cac[1] = new CheckingAccountCustomer("Bob", 1111, 9000, 24606069);
cac[2] = new CheckingAccountCustomer("Jon", 2222, 40000, 12345678);
// prompt user for account number
System.out.print("Please insert Debit Card or enter account number (8 digits):\n");
sc.nextLine();
int accountNumber = sc.nextInt();
for (int i = 0; i < cac; i++)
{
if (accountNumber == cac[i][3])
// DO STUFF WITH OTHER DATA
}
答案 0 :(得分:1)
首先,您的for语句应为:
for (int i = 0; i < cac.length; i++)
第二:引用cac[i][3]
也可能是错误的,具体取决于CheckingAccountCustomer
类的定义。
答案 1 :(得分:1)
我认为应该i < cac.length
而不是cac
,因为cac
是一个数组。
请以任何方式使用Map
,其中键是所需数字,它会更快。
答案 2 :(得分:1)
您没有正确地遍历数组。你应该使用以下for循环:
for (int i = 0; i < cac.length; i++) {
}
另外,你还有另一个有趣的问题。 accountNumber == cac[i][3]
无效,因为cac
只是一维数组。如果我们删除额外的维度访问权限,则会留下accountNumber == cac[i]
。
但是我们有另一个有趣的问题。为什么int
等于CheckingAccountCustomer
?那将永远不会成真。
您想要使用的是对象帐号的某种访问者。
所以,总的来说,你的for循环应该是这样的:
for (int i = 0; i < cac.length; i++) {
if(accountNumber == cac[i].getAccountNumber()) {
// logic.
}
}
答案 3 :(得分:0)
您需要遍历数组。 for循环中的条件语句检查int
是否大于CheckingAccountCustomer[]
,而不是数组的长度。
有条件的if
语句也会将int
与CheckingAccountCustomer
进行比较,评估后,您需要从CheckingAccountCustomer
获取帐号。
for (int i = 0; i < cac.length; i++)
{
if (accountNumber == cac[i][3].getAccountNumber())
// DO STUFF WITH OTHER DATA
}
答案 4 :(得分:0)
您应该为循环使用“foreach”语法:
for :CheckingAccountCustomer c : cac) {
if (c.getAccountNumber() == accountNumber)
}
请注意,我认为您拥有accountNumber的访问方法。