尝试创建阵列时出现堆栈溢出错误

时间:2013-10-04 00:58:31

标签: java arrays stack-overflow

我正在尝试创建一个包含10个Account对象的数组,但是当我尝试运行它时,我收到了Stack Overflow错误。我不知道为什么我收到错误,谷歌没有提出任何问题。谢谢你的帮助。

import java.util.Scanner;

public class Account {

private int id;
private double balance;
private Scanner input = new Scanner(System.in);
private Account[] atm = new Account[10];

public Account(){
    id = 0;
    balance = 0;

    for (int i = 0; i < atm.length; i++){
        atm[i] = new Account(); //Here is where Eclipse says the problem is
        atm[i].setID(i);
        atm[i].setBalance(100.0);
        }
}

1 个答案:

答案 0 :(得分:4)

让我们看看会发生什么:当你创建一个帐户对象时,它创建了一堆新帐户,每个帐户创建了更多帐户,每个帐户创建了更多帐户,每个帐户创建了更多帐户,每个帐户其中创建了更多的帐户,每个帐户都创建了更多...

你在这看到一个模式吗?它无限称为递归,或者至少在堆栈内存耗尽之前 - 这会导致StackOverflowException。

现在寻求解决方案:
我不会让我的帐户类持有一个帐户数组,而是将该数组放在另一个类中,例如AccountCollection或Accounts,或者甚至是Customer,如果所有帐户都由一个客户持有。