【问题标题】:c# Doing a sum of results of a search in a arrayc# 对数组中的搜索结果求和
【发布时间】:2017-09-04 21:19:55
【问题描述】:

好的,这是我的问题。我有一个包含多个规格的车辆构造函数,以及一个注册车辆的类数组。

在我的表单中,我希望让用户在该数组中搜索特定值(在这种情况下,他应输入车辆类型和购买年份,从而在数组中搜索它们,并在找到通讯员后,然后他必须选择他们的收购和出售价格),它应该返回利润的总和。

或者以更简单的方式:利润 = 销售价格 - 收购价格。

到目前为止,我的代码显示了单独的利润,然后是利润的总和,我如何得到后者?

int i;
        bool found = false;
        double lucro = 0;
        for (i = 0; i < viaturas.NumElementos; i++)
            if (viaturas.get(i).CVTipoVeículo == Int32.Parse(cbtipoveiculo.Text))
            {
                if (viaturas.get(i).CVDataVenda.Year == Int32.Parse(tbanopesquisa.Text))
                {
                    double a = viaturas.get(i).CVPreçoVenda;
                    double b = viaturas.get(i).CVPreçoAquisição;
                    lucro += a - b;
                    found = true;
                    MessageBox.Show("O total de lucro das vendas em   " + viaturas.get(i).CVDataVenda.Year + "   foi de:   " + lucro + "€", "Lucro", MessageBoxButtons.OK);

                }
            }
        if (found == false)
        {
            MessageBox.Show("Conjunto de viaturas não existente!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            LimpaCampos();
        }

【问题讨论】:

  • 只需声明另一个名为 double Total = 0; 的变量,然后在循环内写入 Total += lucro; 最后你会得到总数
  • 您应该使用 System.Linq 库扩展来实现这一点。它足够清晰和快速。看来你对 C# 不熟悉,对吗?
  • @Steve 我是这样做的,但我仍然收到更多关于个人利润的信息。
  • @DiegoRafaelSouza 说一般编程!但是我该如何使用 Linq 呢?
  • 就像viaturas.Where(v =&gt; v.CVTipoVeículo == Convert.ToInt32(cbtipoveiculo.Text)).Sum(i =&gt; i.CVPreçoVenda - i.CVPreçoAquisição),你不需要for

标签: c# arrays forms sum


【解决方案1】:

如果您想要一个包含所有利润总和的值,请将您的代码更改为以下

    int i;
    bool found = false;
    double lucro = 0;
    for (i = 0; i < viaturas.NumElementos; i++)
        if (viaturas.get(i).CVTipoVeículo == Int32.Parse(cbtipoveiculo.Text))
        {
            if (viaturas.get(i).CVDataVenda.Year == Int32.Parse(tbanopesquisa.Text))
            {
                double a = viaturas.get(i).CVPreçoVenda;
                double b = viaturas.get(i).CVPreçoAquisição;
                lucro += a - b; // Add it instead of overwriting

                found = true;
                //falta-me pô-lo a somar todos os lucros.

            }
        }
// Show a MessageBox here with a text (Sorry, I don't speak your language) that outputs your 'lucro' variable

如果这不是你的意思,那我不知道你怎么能把所有的利润都变成一个值

【讨论】:

  • 这实际上是一种工作。但现在我得到两个消息框,第一个显示利润,第二个显示利润总和。 (PS 对不起语言:/)
  • 您必须删除 for 语句中的第一个消息框,只留下最后一个显示总和的消息框。
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
  • 1970-01-01
  • 2020-04-28
  • 2012-02-12
相关资源
最近更新 更多