Java (首次编程)如何检查类的数组中的特定值?

Java (首次编程)如何检查类的数组中的特定值?,java,arrays,Java,Arrays,因此,我必须为学校设计一个简单的银行程序,我在检查数组中的特定帐号时遇到了困难 boolean accountsContain(int accountNumber) { for (Account account : getAccounts()) if (account.number == accountNumber) return true; return false; } 基本信息,而不是完整代码: public class Account { pub

因此,我必须为学校设计一个简单的银行程序,我在检查数组中的特定帐号时遇到了困难

boolean accountsContain(int accountNumber) {
  for (Account account : getAccounts())
    if (account.number == accountNumber)
      return true;

  return false;
}
基本信息,而不是完整代码:

public class Account {

    public String name;
    int number;
    double Balance; 

    private Account [] accounts; 


    public Account[] getAccounts() {


        return accounts; 
    }

    public boolean hasAccountNumber(int accountNumber) {

       // How do I check my array of type Account if it has the passed in account number?
       // I was trying to use the following:

        Account[] b = getAccounts();
        if(Arrays.asList(b).contains(accountNumber)){
           return true;
        } else{
          return false;
        }

    }    
}

为什么不工作?

因为数组
b
的元素是对象,而
accountNumber
int(原语)。 您必须遍历数组
b
,并将数组中存在的每个对象的
number
实例变量与
accountNumber
进行比较

例如:

public boolean hasAccountNumber(int accountNumber) {
for (Account a : getAccounts()) {
    if (a.number == accountNumber) { 
        return true;
    }
}
return false;

}因为数组
b
的元素是对象,而
accountNumber
int(原语)。 您必须遍历数组
b
,并将数组中存在的每个对象的
number
实例变量与
accountNumber
进行比较

例如:

public boolean hasAccountNumber(int accountNumber) {
for (Account a : getAccounts()) {
    if (a.number == accountNumber) { 
        return true;
    }
}
return false;

}这不会返回结果,因为您的原始数组由对象组成,并且您的代码正在检查其中一个对象是否等于帐号。这不是一个有效的比较,因为您真正应该做的是检查列表中的每个对象是否有一个等于帐号的数字

boolean accountsContain(int accountNumber) {
  for (Account account : getAccounts())
    if (account.number == accountNumber)
      return true;

  return false;
}
所以你的算法是

1. Set current_position = 0; Start iterating through the list; 
2. Extract object at current_position
3. Does object.number == account_number? true {then break} : false {increment current_position}
4. Continue until end of array

这不会返回结果,因为您的原始数组由对象组成,并且您的代码正在检查其中一个对象是否等于帐号。这不是一个有效的比较,因为您真正应该做的是检查列表中的每个对象是否有一个等于帐号的数字

boolean accountsContain(int accountNumber) {
  for (Account account : getAccounts())
    if (account.number == accountNumber)
      return true;

  return false;
}
所以你的算法是

1. Set current_position = 0; Start iterating through the list; 
2. Extract object at current_position
3. Does object.number == account_number? true {then break} : false {increment current_position}
4. Continue until end of array

您必须循环查看
帐户
并查询每个帐户的帐号

boolean accountsContain(int accountNumber) {
  for (Account account : getAccounts())
    if (account.number == accountNumber)
      return true;

  return false;
}

(旁注:如果看起来应该有一种更简单的方法,那就是完全有了,但是Java还不能做到。看看函数式编程)

你必须遍历
帐户,并查询每个帐户的帐号

boolean accountsContain(int accountNumber) {
  for (Account account : getAccounts())
    if (account.number == accountNumber)
      return true;

  return false;
}

(旁注:如果看起来应该有一种更简单的方法,那完全有,但是Java还不能做到。看看函数式编程)

数组
b
包含
帐户
对象,而不是数字。因此,您必须手动迭代数组,并检查每个
帐户
对象是否与该数字匹配:

public boolean hasAccountNumber(int accountNumber) {
    for (Account account : getAccounts()) {
        if (account.number == accountNumber) { 
            return true;
        }
    }
    return false;
}

话虽如此,一个更好的设计可能是将账户存储在一个
映射中,从账号到
账户
对象本身。

数组
b
包含
账户
对象,而不是数字。因此,您必须手动迭代数组,并检查每个
帐户
对象是否与该数字匹配:

public boolean hasAccountNumber(int accountNumber) {
    for (Account account : getAccounts()) {
        if (account.number == accountNumber) { 
            return true;
        }
    }
    return false;
}

话虽如此,更好的设计可能是将帐户存储在
映射中,从帐户编号到
帐户
对象本身。

为什么要转换为列表?为什么不使用列表?不使用列表的原因是什么?错误是什么,或者堆栈跟踪显示了什么?如何将
帐户
对象与整数进行比较?为什么要转换为列表?为什么不使用列表?您不使用列表的原因是什么?错误是什么,或者stacktrace显示了什么?您如何将
Account
对象与整数进行比较?