我的Java数组搜索无法工作

我的Java数组搜索无法工作,java,arrays,Java,Arrays,我已经创建了一个由3个不同的人的“支票账户信息”组成的数组,如果用户的输入与数组中客户的“账户号”匹配,我需要能够在代码的其他部分使用客户的其余数据 例如,如果用户输入12345678,“我的代码”将需要搜索数组,将该输入与“Jon的”帐户匹配,然后使用Jon的信息处理代码中的其他内容。我基本上是在写ATM软件 我的问题在于将帐号与用户的输入相匹配。帐号是“cac”数组每个部分的最后一个元素 谁能告诉我我做错了什么 CheckingAccountCustomer[] cac = new Chec

我已经创建了一个由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
    }
CheckingAccountCustomer[]cac=新的CheckingAccountCustomer[3];//支票账户客户、姓名、PIN、余额、账号的数组
cac[0]=新支票账户客户(“Joe”,1234、5000、11111);
cac[1]=新支票账户客户(“Bob”,111190002460069);
cac[2]=新支票账户客户(“Jon”,2222400012345678);
//提示用户输入帐号
系统输出打印(“请插入借记卡或输入账号(8位):\n”);
sc.nextLine();
int accountNumber=sc.nextInt();
对于(int i=0;i
首先,您的for语句应为:

for (int i = 0; i < cac.length; i++)
for(int i=0;i

第二:根据
CheckingAccountCustomer
类的定义,引用
cac[i][3]
也可能是错误的。

您需要遍历数组。for循环中的条件语句检查
int
是否大于
CheckingAccountCustomer[]
,而不是数组的长度

如果有条件的
语句也将
int
与将进行计算的
CheckingAccountCustomer
进行比较,则需要从
CheckingAccountCustomer
中获取账号

for (int i = 0; i < cac.length; i++)
{
    if (accountNumber == cac[i][3].getAccountNumber())

        // DO STUFF WITH OTHER DATA
}
for(int i=0;i
我认为应该有
I
而不是
cac
,因为
cac
是一个数组


无论如何,请使用
映射
,其中key是所需的数字,这样会更快。

您没有正确地遍历数组。您应该使用以下for循环:

for (int i = 0; i < cac.length; i++) {

}
您应该为循环使用“foreach”语法:

for :CheckingAccountCustomer c : cac) {
    if (c.getAccountNumber() == accountNumber)

}

请注意,我已经测试过accountNumber有一个访问器方法。

您看到的错误是什么?在“cac[I][3]”的地方,我的编译器说“这种类型的表达式必须是数组类型,但它已解析为CheckingAccountCustomer”。也许您想要
cac[I]。accountNumber
?您编写了
CheckingAccountCustomer
类,而不是我们。这似乎是我使用的最佳选项,但是我没有访问器,现在我在编写它时遇到了问题。它是否类似于:return cac[i][3]?否。您尝试的语句引用的是二维数组,而这是您没有的。访问者是
CheckingAccountCustomer
上返回特定信息(如帐号)的内容。
for :CheckingAccountCustomer c : cac) {
    if (c.getAccountNumber() == accountNumber)

}