我无法进行这种简单的计算

时间:2019-07-16 11:24:32

标签: c#

我有一个非常小的Windows窗体应用程序,该应用程序根据每年的交付量来计算仓库的存储成本,并以图表形式显示结果。 它正在执行应有的操作,但是只有一个小缺陷。

image

第一位有13列,然后每隔12列就有12列。 我希望它总是12。

我一直在尝试对一些代码行进行重新排序,看起来一切正常,我可能只是缺少了一行代码,但无法弄清楚


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace StorageCost
    {
        public partial class Form1 : Form
        {
            public static int throughPot = 52000;

            public static int weekly = 1000;
            public static int weeklyPalletCost = 180;
            public static int deliveries = 2;

            public int storageCost;

            public static int x = 0;

            public static int currentPot = throughPot / deliveries;

            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e)
            {
                Calculate();
            }

            private void Calculate()
            {
                currentPot = throughPot / deliveries;
                storageCost = 0;
                x = 0;
                chart1.Series[0].Points[0].YValues[0] = currentPot + 4000;

                for (int i = 1; i < 51; i++)
                {
                    currentPot -= weekly;

                    if (x>= 51 / deliveries)
                    {
                        x = 0;
                        currentPot = throughPot / deliveries;
                    }

                    chart1.Series[0].Points[i].YValues[0] = currentPot + 4000;

                    storageCost += currentPot * weeklyPalletCost;
                    x++;

                }

                cost.Text = "Total storage cost: £" + storageCost / 100;
                chart1.ChartAreas[0].RecalculateAxesScale();
                chart1.Update();
            }

            private void deliveriesUpDown_ValueChanged(object sender, EventArgs e)
            {
                deliveries = (int)deliveriesUpDown.Value;
                Calculate(); 
            }
        }
    }

这是完整的代码。 我基本上所需要做的就是从第13列开始就获得相同的结果

任何帮助将不胜感激。 预先感谢。

1 个答案:

答案 0 :(得分:4)

这是因为第一列是在for循环之外完成的! 注释掉

            //currentPot = throughPot / deliveries;
            //storageCost = 0;
            //x = 0;
            //chart1.Series[0].Points[0].YValues[0] = currentPot + 4000;

,然后将循环更改为for (int i = 0; i < 51; i++) 我得到了预期的效果。

感谢@Grimm 我不知道F1​​1,F10这件事。这对我很有帮助!