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 は別のクラスのオブジェクトです。私の問題はこの行にあります

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
4

2 に答える 2

2

array[0]各ループが更新されている間、出力で毎回印刷していますarray[0]array[1]など

編集:

noOfSmsの最後でインクリメントしていますCheckingFun()。したがって、最初のパスでは を設定array[0] = 0しますが、println に到達する前にnoOfSmsがインクリメントされ、現在は 1 です。したがってarray[1]、初期化されていない を出力します。

于 2012-06-29T13:58:40.493 に答える
0

object.array[0]この関数を 3 回繰り返し呼び出す

したがって、配列[0]の値は0です

`object.array[i]`
于 2012-06-29T14:05:42.333 に答える