2

合計 10 個の Account オブジェクトの配列を作成しようとしていますが、実行しようとするとスタック オーバーフロー エラーが発生します。エラーが発生する理由がわかりません.Googleは何も思いつきません. 助けてくれてありがとう。

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

1 に答える 1

4

何が起こるか見てみましょう: Account オブジェクトを作成すると、多数の新しい Account が作成され、それぞれがさらに多くの Account を作成し、それぞれがさらに多くの Account を作成し、それぞれがさらに多くの Account を作成し、それぞれがさらに多くの Account を作成します。さらに多くのアカウントがあり、それぞれがさらに多くのアカウントを作成します...

ここにパターンが見えますか?これは、無限に、または少なくともスタック メモリがなくなるまで再帰と呼ばれ、StackOverflowException が発生します。

解決策として
、Account クラスに Account 配列を保持させるのではなく、その配列を別のクラスに配置します。

于 2013-10-04T00:59:06.150 に答える