无法更新公共对象的值

时间:2012-06-29 13:33:40

标签: java global-object

我的问题是我无法更新对象数组的值......

代码是:

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

我不明白的是为什么不更新数组的值。当更新也是对象属性的number的值时。

但我想要的输出是:

 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

2 个答案:

答案 0 :(得分:2)

您每次在输出中打印array[0],而每个循环都在更新array[0]array[1]等等。

编辑:

您在noOfSms结束时递增CheckingFun()。因此,对于第一遍,您设置array[0] = 0,但在到达println之前,noOfSms已递增,现在为1.因此,您打印array[1],但尚未初始化。< / p>

答案 1 :(得分:0)

object.array[0]您反复调用此功能三次

因此array [0]值为0

`object.array[i]`