2012-04-13 8 views
0

私は非常にjavaに新しいです、そして、私はこれで数時間前から立ち往生しています。私はorganizeBallots()を呼び出そうとしますが、私は例外があります。私が読んだところから、私はregionBallotsを正しく初期化していないか、何かがnullであることを示しています。私には、配列を正しく初期化したように見えますが、そのintよりも0でなくnullでなければなりません。 ...しかし、私は間違っていると思います、どんな助けも大歓迎です!java.lang.NullPointerException int配列を呼び出すとき

編集:私が言ったように私は新しいので、助けても分かりませんが、organizeBallots()は別のクラスの別のメソッドから呼び出されています。

int[] regionBallots;   
regionBallots = new int[9]; 



public int[] organizeBallots(int incoming) 
{ 

    if (incoming >= 1 && incoming <= 10) 
     regionBallots[0]++; // I get the exception here 

    else if (incoming >= 11 && incoming <= 20) 
     regionBallots[1]++; 


    return regionBallots; 

} 
+3

初期化子の書き込みを使用するには ?どんな方法? –

+1

何の例外がありますか? NullPointerException? System.out.println(regionalBallots)を調べてnullであるかどうかを確認してください。 –

+0

最初の行はクラスの先頭での格下げであり、2行目は同じクラスのコンストラクタにあります。 @PiotrKochanskiええ、それはNullPointerExceptionです。 – bzach

答えて

2

このようにそれを作る:​​

あなたは初期化子を除き、メソッドの外にコードを記述することはできません。

{ 
    //here the initializing code 
} 

静的初期化子の書き込みを使用するには::

static { 
    //here the static initializing code 
} 
+3

OPの記述どおりの例外ではなく、コンパイラエラーが発生しませんか? –

+0

彼はそれをグローバル変数として書くことができますか? – evanwong

+0

@カークウォール - はい、そうです。 –

1

このコードは何の問題もなく私の仕事:

最初の2行が配置されて
public class T { 

    int[] regionBallots; 

    public T() { 
     regionBallots = new int[9]; 
    } 

    public int[] organizeBallots(int incoming) { 

     if (incoming >= 1 && incoming <= 10) 
      regionBallots[0]++; // 

     else if (incoming >= 11 && incoming <= 20) 
      regionBallots[1]++; 

     return regionBallots; 

    } 

    public static void main(String[] args) { 
     T t = new T(); 
     for (int i = 0; i < 100; i++) {   
       System.out.println(t.organizeBallots(i)); 
       System.out.println(t.organizeBallots(i)[0]); 
       System.out.println(t.organizeBallots(i)[1]); 
     } 
    } 

} 
+0

ちょうど不思議の国のアリス、あなたは何を違うのですか?これはちょうど私がhahaをしたように見える – bzach

+0

難しいと言います。私はあなたのコードに何の問題も見ませんでした。 organizeBallotsメソッドでregionBallotsがnullでないかどうかを確認するコードをデバッグしてみてください。 –

関連する問題