gpt4 book ai didi

java - 查找 ArrayList 对象 - 搜索不起作用?

转载 作者:行者123 更新时间:2023-12-01 14:19:23 25 4
gpt4 key购买 nike

我正在创建一家可以存款、取款、创建帐户并显示所有余额的银行。

我的 createButton 方法工作正常 -

    public void createNewAccountButtonPanel(){
//create button
createButton = new JButton("Create New Account");
//Add Listener modeled from InputFrame.Java from GroupProject
class AddCreateNewListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent CreateNew){
//account number has to be 4 digits. Balance has to be 100 or more
if(accountField.getText().trim().length() != 4 || balanceField.getText().trim().length() < 3){
//not correct input, tell the user to enter the correct input
System.out.println("Failed to create a Bank Account!");
textArea.append("Please enter a Account number and a Balance!" + "\n");
}
else
{//read the input
System.out.println("Creating a Bank Account!");
Integer accountNumber = Integer.parseInt(accountField.getText());
Double amount = Double.parseDouble(balanceField.getText());
getBank().createNew(accountNumber, amount);
textArea.append("You created " + getBank().accounts.get(getBank().accounts.size()-1) + " \n");
}
}
}
createNew = new AddCreateNewListener();
createButton.addActionListener(createNew);
}

这是我的搜索 - 它总是返回 null,即使我知道我已经添加了帐户...

    public BankAccount search(Integer accountNumber){
BankAccount found = null;
for(BankAccount a : accounts){
if(a.getAccountNumber() == accountNumber) {
System.out.println("Found the account!");
found = a;
}
else{
System.out.println("The Account Number you entered was not found.");
found = null;
}
}
return found;
}

我错过了什么?这也导致我的存款和取款按钮现在可以工作。我的显示所有帐户效果很好。

编辑:看来我的搜索正常,我添加了一个中断。现在的问题是让余额显示在 gui 的文本区域中 - 它总是显示 0.0

    public void displayBalancePanel(){
//create the button
displayBalanceButton = new JButton("Display The Balance");
//Add listener modeled from InputFrame.java from GroupProject
class AddDisplayBalanceListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent DisplayBalance){
//read the input
Integer accountNumber = Integer.parseInt(accountField.getText());
System.out.println("accountNumber to Display Balance for: " + accountNumber);
getBank().displayBalance(accountNumber, amount);
textArea.append("The Balance for Account: " + accountNumber + " is " + getAmount() + "\n");
}
}
displayBalance = new AddDisplayBalanceListener();
displayBalanceButton.addActionListener(displayBalance);
}

新搜索 -

    public BankAccount search(Integer accountNumber){
BankAccount found = null;
for(BankAccount a : accounts){
if(a.getAccountNumber().equals(accountNumber)) {
System.out.println("Found the account!");
found = a;
System.out.println("a: " + a);
break;
}
else{
System.out.println("The Account Number you entered was not found.");
found = null;
}
}
return found;
}

最佳答案

找到帐户后,for 循环将继续越过所需的帐户。然后 elsefound 设置回 null

找到帐户后,只需从 if block 中返回该帐户即可。您甚至不需要 else block 。

事实上,您根本不需要 found 变量。直接在if block 中returna即可,方法中最后一条语句如果没有找到可以改为return null; .

关于java - 查找 ArrayList 对象 - 搜索不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17753051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com