最小功能不能正常工作

时间:2018-05-08 14:27:44

标签: c#

我用Visual Studio c #WindowsForms编写了这段代码,但它不能正常工作。 在我的Form1上:

private void btnVisualizzaPrezzoMin_Click(object sender, EventArgs e)
{
   listView1.Items.Clear();
   int i = 0;    
   while (i < num)     
   {
       if (eleMutui[i].Durata <= int.Parse(txtDurata2.Text) && eleMutui[i].Durata >= int.Parse(txtDurata1.Text))
       {
           int Min = Funzioni.ImportoMin(eleMutui, num);
           ListViewItem Nuovariga = default(ListViewItem);          
           Nuovariga = new ListViewItem(new string[] { 
                eleMutui[Min].Codice.ToString(),
                eleMutui[Min].Nome,
                eleMutui[Min].Provincia,
                eleMutui[Min].DataPartenza.ToString(),
                eleMutui[Min].Importo.ToString(),
                eleMutui[Min].Durata.ToString() 
             });

         listView1.Items.Add(Nuovariga);

    }
    i++;
}

最小功能是:

public static int ImportoMin(Mutui[] ele, int n)
{
    int x = 0;
    decimal MinimoImporto = default(int);
    while (x < n)
    {
        if (ele[x].Importo < MinimoImporto)
        {
            MinimoImporto = ele[x].Importo;
        }
        x++;
    }
    return decimal.ToInt32(MinimoImporto);
}
你能帮帮我吗?我必须这样做:由用户给出持续时间间隔(例如60到120个月之间),显示所有数据 持续时间在指定范围内的较低金额的贷款。 谢谢!!

2 个答案:

答案 0 :(得分:0)

在您的函数ImportoMin中,您可能应该执行for循环,而不是使用while循环。

public static int ImportoMin(Mutui[] ele)
   {
    // I'd return -1 or something to indicate something is wrong
    if(ele.Count == 0) return -1;
    decimal MinimoImporto = int.MaxValue;

    for(int i = 1; i < ele.Length; i++)
    {
      if( ele[i].Importo < MinimoImporto)
      MinimoImporto = ele[i].Importo;
    }

    return MinimoImporto;
}

在你的函数中,你将你的min初始化为零,除非其他一切都是负数,否则它每次都会返回零。

编辑:此函数将返回数组中的最小值,但如果您正在查找索引,则可以参考juharr的答案。

答案 1 :(得分:0)

当您基本上只是循环n时,很难理解为什么在ImportoMin()中使用[]。 (即如果n应该是[]的长度,但我看不到num的声明位置。)

要继续使用您的格式,您可以执行以下操作:

public static int ImportoMin(Mutui[] ele)
{
    decimal MinimoImporto = int.MaxValue;
    for(int x = 0; x < ele.length; x++)
    {
       if (ele[x].Importo < MinimoImporto)
       {
           MinimoImporto = ele[x].Importo;
       }
    }
    return decimal.ToInt32(MinimoImporto);
}