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

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

Код является:

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

2 ответа

Решение

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

Редактировать:

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

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

Таким образом, массив [0] значение равно 0

`object.array[i]`
Другие вопросы по тегам