我用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个月之间),显示所有数据
持续时间在指定范围内的较低金额的贷款。
谢谢!!
答案 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);
}