javaglobal-object

Unable to update the value of a public object


my problem is i am not able to update the value of an object array...

The code is :

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;

    }

The other class is :

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

}

Here object is an object of another class. My problem is in this line

object.array[noOfSms] = noOfSms;

The output is as follows

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

What i don't understand is that why isn't the value of array updated. When the value of number which is also an attribute of the object is updated.

But the output i want is :

 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

Solution

  • You're printing array[0] each time in your output, while each loop is updating array[0]. array[1], etc.

    Edit:

    You're incrementing noOfSms at the end of CheckingFun(). So for the first pass, you set array[0] = 0, but before you reach your println, noOfSms has been incremented and is now 1. So you print array[1], which has not been initialized.