Невозможно обновить значение публичного объекта
Моя проблема в том, что я не могу обновить значение массива объектов...
Код является:
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]`