--- Большое спасибо за комментарии и подсказки, которые вы оставили! Я решил свою проблему! ---Java - странное поведение ArrayList
Я ве есть вопрос, вот мой Java код:
ArrayList<Row> row = getARowList();
while (data.readRecord()) {
double houseId = data.getSomething();
int buildTime = data.getSomethingElse();
for (Row row : rows) {
// !!!!!!
row.setAge("DefaultValue"); // !!!!
// !!!!!**
if (row.getID() == houseId) {
if (buildTime < 2009 && buildTime > 1000) {
if ((2009 - buildTime) > 30) {
row.setAge("OLD");
} else {
row.setAge("NEW");
}
}
}
}
}
for (Row row : rows) {
System.out.println("Strange Thing: " + row.getAge());
}
Если я запускаю это, я получаю выход:
странную вещь: умолчаниюСвойство
Странная вещь: DefaultValue
Strange Вещь: DefaultValue
Странная вещь: DefaultValue
Странная вещь: DefaultValue
Странная вещь: DefaultValue
Strange Thing: NEW
Если я удалю грань между "!!!!!" (Row.setAge ("DefaultValue");), то результат:
странная вещь: СТАРЫЙ
странная вещь: СТАРЫЙ
странная вещь: НОВАЯ
странная вещь: нулевая
странная вещь: СТАРЫЙ
странное дело : null
Strange Thing: NEW
только, к примеру. Последнее, что я хочу. Я просто хочу заменить «null» на «DefaultValue». Но когда я устанавливаю значение по умолчанию раньше (см. «!!!!!!»), результат неверен, и все значения, кроме последнего значения, имеют значение «DefaultValue».
У кого-нибудь есть объяснение? Я сижу здесь в течение 2 часов, и я могу басистски не понимать, что случилось. Спасибо заранее!
Обучение использованию основ отладчика занимает менее 2 часов. –
Вы изменяете состояние ссылки. Это ничего странного. Странно, что вам нужно написать Q/A вместо использования отладчика. –
Вы также используете '==' на плавающей запятой. – chrylis