【发布时间】:2017-03-16 08:00:25
【问题描述】:
所以问题是我无法让 total += parkFee 将所有 parkFee 加在一起,它似乎只需要 20 max_fee 并将其乘以数组长度 (30) 而不是获取 parkFee 的新总和。
这很可能是我错过的超级简单的东西,因为我对此很陌生,但我似乎无法弄清楚。
我觉得这个问题可能与if 声明有关。如果有人能指出我正确的方向,将不胜感激。谢谢。
/*pseudocode
Program : CarParkCalc3
* HOURLY_RATE=2.50
* MAX_FREE=20.00
* int[]hoursArray
* parkFee = HOURLY_RATE * hoursArray
* IF parkTime > MAX_FEE THEN
* OUTPUT MAX_FEE
* ELSE
* OUTPUT parkFee
* ENDIF
*/
const decimal HOURLY_RATE = 2.50m;
const decimal MAX_FEE = 20m;
decimal parkFee = 0;
int[] hoursArray = { 8, 24, 9, 7, 6, 12, 10, 11, 23, 1, 2, 9, 8, 8, 9, 7, 9, 15, 6, 1, 7, 6, 12, 10, 11, 23, 1, 2, 9, 8 };
Console.WriteLine("Hours Park fee");
for (int index = 0; index < hoursArray.Length; index++)
{
{
parkFee = HOURLY_RATE * hoursArray[index];
if (parkFee > MAX_FEE)
{
Console.WriteLine("{0,6} {1,9} ", hoursArray[index], MAX_FEE.ToString("N"));
}
else
{
Console.WriteLine("{0,6} {1,9} ", hoursArray[index], parkFee.ToString("N"));
}
}
}
decimal total = 0;
double average = 0;
for (int index = 0; index < hoursArray.Length; index++)
{
total += parkFee;
}
average = (double)total / hoursArray.Length;
Console.WriteLine("Total = " + total);
Console.WriteLine("Average = " + average.ToString("N2"));
Console.ReadKey();
【问题讨论】:
-
您每次都在上层 for 循环中重新计算 parkFee。总计只是为数组中的每个元素添加相同的 parkFee(上 for 循环中最后计算的值)
-
解决这个问题以及学习新知识的最佳方法是调试这段代码,观察每行代码中所有变量的变化情况。这样你就会看到它有什么问题
-
看看你添加
parkFee的最后一个循环。在每次迭代时检查parkFee的值!如果您不想或不能使用调试器,可以将其打印到控制台。你会发现它没有改变!现在原因是你的解决方案