大家好,我正在尝试使用存储在arraylist中的帐号进行登录,我无法将用户输入与帐号相匹配。我的代码如下:
登录方法 - 主要类
private void Login (){
int UserInput;
Scanner option = new Scanner (System.in);
Account Account = new Account();
ArrayList<Client> customers = bank.getCustomers(); //Gets Customer Info from Bank
System.out.println("What is your Account Number?");
UserInput = option.nextInt();
if(UserInput==Account.getAccountNumber()){
Menu();
int choice = UserInput();
performAction(choice);
//system.out.println(i+1 + ")" + customers.get(i).BasicInfo());
}
else {
System.out.println("Invalid Account Number");
}
}
ArrayList - 银行类
public class Bank {
ArrayList<Client> customers = new ArrayList<Client>(); //Adds customer details in this
void addCustomer(Client customer) {
// TODO Auto-generated method stub
customers.add(customer);//Adds customer from Menu to ArrayList
}
Client getCustomer(int account) {
// TODO Auto-generated method stub
return customers.get(account); //Returns Customer detail from ArrayList
}
ArrayList <Client> getCustomers (){
return customers; //Returns customers
}
}
大家好我想做的是让主类中的userInput能够匹配'GetMethod'中的AccountNumber我相信它存储在'Bank'类的araylist中。如果它匹配了帐号然后if语句中的其他方法函数。现在当我输入AccountNumber时,它只是转到else语句并显示“Invalid AccountNumber”。如果这没有意义,我道歉。
答案 0 :(得分:1)
从您的代码中,我认为您正在将用户的帐号保存在其他位置。
您从Account类获得的帐号是可以分配的下一个帐号。当您初始化Account类时,在Account构造函数中,它会增加帐号。该号码从Account.getAccountNumber()返回。
这不可能是现有用户的帐号。
解决方案:您未在此处发布客户类。但是您必须在客户类中包含account_number变量。您可以为帐号设置一个getter。在银行内你有列表客户的。您需要遍历每个客户,并将输入的帐号与这些客户的帐号相匹配。银行类内的循环可能如下所示:
for(int i=0;i<customers.size();i++){
if(inputAccountNumber == customers.get(i).getAccountNumber())
{
return true;
}
}
这不是一个可扩展的解决方案。您可以为客户设置一个哈希映射,其帐号为密钥,值为该客户的客户类实例。
希望这能解决你的问题。