2012-02-10 6 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 разобран и правильно передал вам значения.

Другое дело, что я изменил бы то, что ваш параметр для конструктора User имеет то же имя, что и внутреннее поле. Вы использовали переменную «this», которая хороша, но вы все же хотите изменить это имя параметра, чтобы избежать возможной путаницы, вы можете назначить эту переменную самому себе.

Настройка точек останова и переход по вашей программе вы должны быть в состоянии точно определить, где именно возникает проблема, и тогда ее будет намного легче решить.

Удачи вам!

+0

Спасибо за предложение. Я был в состоянии следовать вашим советам, но я до сих пор не определил проблему. В конечном счете, я заменил примитивные типы массивов объектами ArrayList и фактически сделал их намного легче отлаживать. – user836200