搜索阵列与布尔

问题描述:

真的卡住了这个,所以任何帮助表示赞赏我只是一个初学者基本上我有3类称为帐户,地址& AccountCollection在AccountCollection我必须创建一个布尔搜索,将打印一个单一的帐户给出一个帐号使用Account类的方法。如果这是无效的,它应该输出“账号与帐号:[accountNumber]未找到。”搜索阵列与布尔

的代码,我至今

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

    } 
    return false; 

} 

这似乎工作,直到我把一个错误的值,那么它给了我一个空指针异常61任何帮助将是辉煌的感谢

+4

这意味着第61行中的一个对象是'null'。看看这条线,并检查为什么他们每个都是'空'。没有语境,任何人都不可能找到答案。 – khelwood 2014-12-07 17:27:39

+0

帐号可能返回'int' *(或者我会假设)* - 如果是这样,那么您应该通过'=='而不是'.equals()'进行比较。 但是,您正在收到第61行中的“NPE”,因此您必须向我们显示该行以了解发生了什么。 – Juxhin 2014-12-07 17:29:26

+0

嗨账号是一个字符串,第61行是上面的那一行if(account.getAccountNumber()。equals(accountNumber)) – chris 2014-12-07 17:35:59

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

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; 
} 

尝试增加

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; 

} 
+0

他可能在列表中间有一个空账户。您的解决方案将不会搜索空帐户后的帐户。 – hasan83 2014-12-07 17:40:32