Как в массив записать переменную, а не значение
Подскажите пожалуйста, есть три переменные
private static double totalRevenueNegative = 0;
private static double totalRevenueNormal = 0;
private static double totalRevenuePositive = 0;
Есть ArrayList куда я хочу записать переменные (не значения)
ArrayList<Double> forecast = new ArrayList<>();
forecast.add(totalRevenueNegative);
forecast.add(totalRevenueNormal);
forecast.add(totalRevenuePositive);
Далее , у меня стоит задача, в цикле доставать из массива переменные по очереди, и присваивать им значения, но, если я в цикле использую такую запись forecast.get(i) - то она мне достаёт из массива значение, а именно 0.0, а нужна переменная, чтобы ей присваивать новые значения
Ответы (2 шт):
По-моему тут «Ошибка молотка» или «Ошибка XY».
Всё делается проще (отчасти).
Если у вас есть три переменные, связанные собой по контексту, то проще не определять три переменные отдельно, а сделать класс с такими свойствами и уже экземпляр класса добавлять в список, а потом вынимать его и оперировать свойствами.
А если планируется оперировать только тремя переменными, то зачем в принципе список? Почему нельзя просто оперировать этими переменными в коде?
Проблема в том, что double примитивный тип, и является значимым. Вам нужно создать отдельный класс с одной переменной, чтобы можно было записать ссылку в массив. Вот:
public class DOUBLE {
public double doub;
public DOUBLE(double doub){
this.doub = doub;
}
}
Записать в массив:
private static DOUBLE totalRevenueNegative = new DOUBLE(0);
private static DOUBLE totalRevenueNormal = new DOUBLE(0);
private static DOUBLE totalRevenuePositive = new DOUBLE(0);
ArrayList<DOUBLE> forecast = new ArrayList<>();
forecast.add(totalRevenueNegative);
forecast.add(totalRevenueNormal);
forecast.add(totalRevenuePositive);
Обратиться:
double a = forecast.get(0).doub;
double b = forecast.get(1).doub;
double c = forecast.get(2).doub;