2012-02-10 15 views
0

gsonをあきらめた後、私は非常に小さな問題のように思えますが、問題を特定できないようです。私は単にJSONArrayから整数の配列を取得し、整数の配列をクラス変数に保存しようとしています。JSONArrayから配列を取得し、配列をクラス変数に設定する

int length = myArray.length(); 
if(length>0){ 
    for(int j=0; j<length; j++){ 
    JSONArray test = myArray.getJSONArray(j); 
    myArray = new int[test.length()]; 
    for(int k=0; k<test.length(); k++) { 
     myArray[k] = test.getInt(k); 
    } 
} 



    // However, when I add myArray to the User constructor, the values don't "stick" 
    // ie, 
    User user = new User(x, y, z, myArray); 

    // At this point, myArray doesn't contain its values after I try to access them fromthe  
    // User class 

ここでUserクラスです:

public User(String x, String y, int z, int[] myArray){ 
    this.x = x; 
    this.y = y; 
    this.z = z; 
    for(int i=0; i<myArray.length; i++){ 
     Log.v(LOG_TAG, "User: myArray [" + i + "] = " + myArray[i]); 
     this.myArray[i] = myArray[i]; 
    } 
} 

私は、ユーザーの内容を印刷しようとすると、期待値の全てが、配列自体を除いてあります。ありがとう。

答えて

0

私はので、私はいくつかの一般的なアドバイスを提供しますあなたのコード内の任意の大きな欠陥が表示されない...

あなたのコード内のいくつかのブレークポイントを設定し、問題の範囲を特定することができるようにデバッグモードに入ります。 myArrayはあなたのユーザークラスに渡す前にすべての要素を設定していますか?そうでない場合は、一歩前に戻り、JSON配列が解析されていることを確認し、値を正しく渡してください。

私が変更するもう1つのことは、Userコンストラクタのパラメータが内部フィールドと同じ名前であることです。あなたは良い 'this'変数を使用しましたが、混乱を避けるためにそのパラメータ名を変更したい場合は、変数を自分自身に割り当てることができます。

ブレークポイントを設定してプログラムを実行すると、問題が最初に発生している場所を正確に特定できるようになり、解決しやすくなります。

幸運を祈る!

+0

提案していただきありがとうございます。私はあなたの助言に従うことができましたが、私はまだ問題を特定しませんでした。最終的には、プリミティブな配列型をArrayListオブジェクトに置き換えました。実際には、これをデバッグするのがずっと簡単でした。 – user836200

関連する問題