2011-10-07 1 views
5

私は、Javaでかなり新しいだと私は私を悩まされています。このnullポインタ例外を修正する方法を考え出すタフな時間を持っています。Javaオブジェクト配列は要素をnull以外の値として初期化できますか?

問題が発生した場所を私は知っていると私は、NULLポインタ例外が何であるかを知っているが、私は私のプログラムを動作させるつもりですか見当がつかない。ここで

は、問題が発生しているコードスニペットです:

public static void main(String[] args) { 
Scanner input = new Scanner(System.in); 

    Account[] atm = new Account[10]; 

    for (int i = 0; i < 10; i++){ 
     atm[i].setId(i); 
     atm[i].setBalance(100.00); 
    } 

私は、ATM内のオブジェクトは、[]はnullですが、私は修正するかどうかはわかりませんので、それが起こることを知って、言ったように問題。

私はそれらは私が定期的に作るの過ちの種類ですが、皆さんが与えることができる任意のヘルプは、私の一日になるだろうので、それはいくつかの愚かな間違いだと確信しています。

ありがとうございます!

答えて

8

あなたの全体の配列がnullであります! int、float、double、booleanの配列でない限り、配列はjavaで自動的に初期化されることはありません。

あなたがオブジェクトを保持する配列を宣言している場合は、としてそれを読ん
Scanner input = new Scanner//System.in.Scanner; 

Account[] atm = new Account[10]; 

for (int i = 0; i < 10; i++){ 
    **atm[i] = new Account();** 
    atm[i].setId(i); 
    atm[i].setBalance(100.00); 
} 

「私は 『はx』のオブジェクトを保持する配列を作成しています。」

...とは対照的に...それらのオブジェクトに

をインスタンスに進み、その後(正しい)、そして「私はそれで 『X』のオブジェクトの配列を作成しています。」それらがまだ作成されていないため、まだそこにオブジェクトがないので、(間違った)など0、0.0、 `false`を、` null`なので、:

+2

か、それを考えるために、おそらくより良い方法:アレイには*必ず* default- Javaで初期化され、初期化子は常に0充填のと同じです –

+0

ありがとうございました!これは私が持っていたJava配列の最初の習慣であり、私はその小さなおかずをまったく気づいていませんでした!私はそれが再び起こることを許さないでしょう=) – KAM1KAZEKOALA

関連する問題