Java 为什么我的循环没有结束?

Java 为什么我的循环没有结束?,java,Java,此方法测试accountnumber是否在给定数组中 public boolean containsAccount(int accountNumber) { int i; boolean ausgabe = false; for (i = 0; i < allAccounts.length; i++) { if (allAccounts[i].getAccountNumber() == accountNumber) { ausgabe

此方法测试accountnumber是否在给定数组中

public boolean containsAccount(int accountNumber) {
  int i;
  boolean ausgabe = false;
    for (i = 0; i < allAccounts.length; i++) {
        if (allAccounts[i].getAccountNumber() == accountNumber) {
            ausgabe = true;
        }
        else if (i == length() - 1) {
            ausgabe = false;
        }
    }
    return ausgabe;
}
public boolean containsAccount(int accountNumber){
int i;
布尔ausgabe=false;
对于(i=0;i
期望返回true或false,但这似乎是一个永不中断的循环,不会重新声明任何内容。

尝试此方法

public boolean containsAccount(int accountNumber) {
    for (int i = 0; i < allAccounts.length; i++) {
        if (allAccounts[i].getAccountNumber() == accountNumber) {
            return true;
        }
    }

    // If the execution flow reaches this line, then that
    // means that the account 'id' does not exist in the array
    return false; 
}
public boolean containsAccount(int accountNumber){
for(int i=0;i

更干净、更少的变量&使您可以轻松地检测代码中的真正问题。(可以是
allAccounts
数组,或者
accountNumber

您应该将
allAccount.length
打印到控制台,然后在每次循环迭代中打印
i
。看看我是否变得比帐户长度更大!唯一可能失败的是
getAccountNumber()
length()
方法。。。循环本身不包含任何会导致无限循环的内容!您可以使用
返回Arrays.asList(allAccounts).contains(accountNumber),而不是在数组中循环。您的方法看起来不错(尽管包含一些简单的优化非常容易)。我唯一想到的是一个非常大的
allAccount
数组(因此它似乎是无止境的),或者在
getAccountNumber()
方法中有一个无限循环。length()似乎也是一个函数,也可能是一个problem@Wavemaster只有当
allAccounts
不是原语时,这才有效(可能不是,但必须确保…)这实际上比OP的版本更具可读性,可能更快,但它没有回答问题!@ParkerHalo你在技术上是对的。我只是想向OP指出这一点:通过这种方式,如果代码不起作用,我们可以确定,
allAccounts.length
在调用的方法中的某个地方改变了值。另外,OP应该用这些方法的代码更新他的帖子,但他仍然没有更新。