2012-06-29 2 views
0

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

Код:

public class GlobalVariable { 

    public int noOfSms = 0; 
    public CheckingClass object = new CheckingClass(); 
    public static void main(String[] args) { 
     GlobalVariable call = new GlobalVariable(); 
     call.driver(); 
    } 

    private void driver() { 
     for(int i = 0 ; i < 3 ; i++){ 
     object = CheckingFun(); 

    // System.out.println("The No Of Sms"+noOfSms); 
     System.out.println("Array Value"+object.array[noOfSms] + "  The number value"+object.number); 
     } 
    } 

    private CheckingClass CheckingFun() { 

     System.out.println("The No Of Sms "+noOfSms + "\n"); 
     object.array[noOfSms] = noOfSms; 
     object.number = noOfSms; 
     noOfSms = noOfSms + 1; 

     return object; 

    } 

Другой класс:

public class CheckingClass { 
public int number ; 
public int[] array = new int [5]; 

} 

Здесь объект является объектом другого класса. Моя проблема в этой строке

object.array[noOfSms] = noOfSms;

Выход заключается в следующем

The No Of Sms 0 

Array Value0  The number value0 
The No Of Sms 1 

Array Value0  The number value1 
The No Of Sms 2 

Array Value0  The number value2 

Что я не понимаю, что почему не значение массива обновляется. Когда обновляется значение числа, которое также является атрибутом объекта.

Но выход я хочу это:

Array Value0  The number value0 
The No Of Sms 1 

Array Value1  The number value1 
The No Of Sms 2 

Array Value2 The number value2 
+1

Я хотел бы предложить, чтобы опубликовать некоторые компилируемый код. –

+3

Вы понимаете, что каждый раз обновляете каждый слот в массиве '[noOfSms]', правильно? – Thomas

+0

@Thomas да, я хочу, чтобы индекс массива обновлялся каждый раз, когда я приходил в эту функцию – user1318860

ответ

2

Вы печати array[0] каждый раз, когда в вашем выводе, в то время как каждый цикл обновления array[0]. array[1] и т.д.

Edit:

Вы приращением noOfSms в конце CheckingFun(). Итак, для первого прохода вы устанавливаете array[0] = 0, но прежде чем вы достигнете своего println, noOfSms был увеличен и теперь равен 1. Итак, вы печатаете array[1], который не был инициализирован.

+0

Я проверял так, чтобы изменить его на массив [0] ... но ранее я делал массив [noOfsms], и он все равно дает мне тот же результат :( – user1318860

+0

Новое редактирование для этой проблемы. – Thomas

0

object.array[0] Вы неоднократно вызова этой функции три раза

Так массив [0] значение 0

`object.array[i]` 
+0

thx я действительно понял. . :) Но проблема была что-то еще! – user1318860

Смежные вопросы