【问题标题】:searching an array with boolean使用布尔值搜索数组
【发布时间】:2014-12-07 17:23:51
【问题描述】:

真的坚持这一点,所以任何帮助表示赞赏,我只是一个初学者,基本上我在 AccountCollection 中有 3 个名为 Account、Address 和 AccountCollection 的类,我必须创建一个布尔搜索,它将打印一个给定帐号的单个帐户,使用Account 类的方法。如果这是无效的,它应该输出“Account with account number: [accountNumber] not found.”

我目前的代码是

public boolean getAccount(String accountNumber)
{
    for (Account account : accounts)
    {
        if (account.getAccountNumber().equals(accountNumber))
        {
            account.printAccountDetails();
            System.out.println();
            return true;
        }

    }
    return false;

} 

这似乎有效,直到我输入错误的值然后它给了我一个空指针异常 61 任何帮助都会非常感谢

【问题讨论】:

  • 表示第61行的一个对象是null。查看该行并检查为什么它们每个都是null。没有上下文,其他人不可能发现。
  • 帐号可能返回int (或者我认为是这样) - 如果是这样,那么您应该通过== 而不是.equals() 进行比较。但是,您在第 61 行收到 NPE,因此您必须向我们展示该行,以便我们了解发生了什么。
  • 你好,帐号是一个字符串,第61行是上面的,如下 if (account.getAccountNumber().equals(accountNumber))

标签: java arrays boolean


【解决方案1】:

数组列表和类似结构接受添加空对象。

    ArrayList<String> asd = new ArrayList<>();
    asd.add(null);
    asd.get(0).substring(0); // it will crash here on calling substring() for null object.

您必须检查添加空帐户的位置。并在那里修复它,除非需要接受空对象。

如果您为帐户接受空对象,请在搜索方法中执行以下操作以将空对象跳过到下一个对象。

public boolean getAccount(String accountNumber)
{
    for (Account account : accounts)
    {
        if(account != null)
        {
            if (account.getAccountNumber().equals(accountNumber))
            {
                account.printAccountDetails();
                System.out.println();
                return true;
            }
        }
    }
    return false;
} 

【讨论】:

    【解决方案2】:

    尝试添加

    public boolean getAccount(String accountNumber)
    {
        for (Account account : accounts)
        {
            if(account == null) {
                return false;
            }  
            if (account.getAccountNumber().equals(accountNumber))
            {
                account.printAccountDetails();
                System.out.println();
                return true;
            }
    
        }
        return false;
    
    } 
    

    【讨论】:

    • 他可能在列表中间有一个空帐户。您的解决方案不会搜索空帐户之后的帐户。
    猜你喜欢
    • 1970-01-01
    • 2014-03-30
    • 2018-10-10
    • 1970-01-01
    • 2014-06-16
    • 2015-05-23
    • 2014-06-28
    • 1970-01-01
    • 2012-05-06
    相关资源
    最近更新 更多