Я пытаюсь создать Пенсионный калькулятор как шанс сделать что-то полезное и лучше изучить C #. В настоящее время я пытаюсь построить DataTable с динамическим количеством строк / столбцов.
Для контекста, я прошу пользователя ввести некоторые данные, касающиеся зарплаты,% от инвестируемой зарплаты и ожидаемой рентабельности инвестиций. У меня тоже есть кое-что другое, но на самом деле это не часть моей проблемы. Поскольку количество столбцов, которое мне нужно для DataTable, неизвестно до тех пор, пока не будет запущена формула (пока завершается цикл + for), у меня возникают проблемы при работе с DataColumns. Надеюсь, приведенный ниже код поможет.
Я действительно пытаюсь построить таблицу по одному столбцу за раз. Я понимаю, что мог бы перевернуть его, чтобы построить его по одной строке за раз, потому что известны годы до выхода на пенсию (yearsRetire), но я бы предпочел не делать этого и хочу узнать больше. Извините за отступы и комментарии. Я попытался оставить некоторые из моих комментируемых попыток кодирования там. Спасибо за любую помощь.
public double calcROI()
{
double testROI = 0.00;
double tempRetireAmount = 0;
double adjustRetire = goalAmount * (1 + (Math.Pow(inflation,yearsRetire)));
// Loop through ROI values until the calculated retire amount with the test ROI
// is greater than the target amount adjusted for inflation
while (tempRetireAmount < adjustRetire)
{
//Increment ROI by 1% per while iteration
testROI += .01;
//Make a new Column to hold the values for ROI for this while iteration
//dtMain.Columns.Add(Convert.ToString(testROI));
//DataColumn tempdc = new DataColumn(Convert.ToString(testROI));
//Loop through the number of years entered by user and see the amount
//at Retirement with current ROI
for (int i = 0; i < yearsRetire; i++)
{
//Main formula to calculate amount after i years
tempRetireAmount = (tempRetireAmount + salary*savingsPct) * (1 + testROI);
// Add value for this year/ROI to table/column
//DataRow dr = .NewRow();
//dr tempRetireAmount;
//tempdc[i] = tempRetireAmount;
}
//Need to add column of data to my Main DataTable
//dtMain.Rows.Add(dr);
//dtMain.Columns.Add(tempdc);
}
return testROI;
}
ОБНОВЛЕНИЕ: Я просто не хочу сказать, что это лучший подход, поскольку я выхожу из своей области знаний по умолчанию. Обычно я просто собирал матрицу с максимальным размером (array [maxrows] [maxcols]) и заполнял ее. Я пытался думать меньше как на C и использовать некоторые возможности C #. Если есть намного лучший способ, я с удовольствием поменяю технику. Благодаря.