使用for循环并在消息框中显示多个结果
本文关键字:显示 结果 消息 for 循环 使用 | 更新日期: 2023-09-27 18:12:38
我想看看是否有一种方法来添加我在for循环中创建的多个结果,并将这些多个结果放在消息框中,每个结果也创建换行符。
我试过这个方法
for (n = START_YEAR; n <= END_YEAR; n += INTERVAL)
{
a = p * (decimal)Math.Pow((1 + CONVERSION_FACTOR), n);
MessageBox.Show("Year" + " " + "Amount of deposit" + Environment.Newline + n + a);
}
我注意到的是,这不会显示我想要得到什么,相反,它会显示多个消息框,但我的问题是,如果我把show messagebox行带出for循环,我不能显示从消息框内的for循环计算的结果,因为它不能使用本地变量从for循环。如有任何提示,不胜感激。
可以在循环外创建字符串变量,并在循环内连接到它。然后在循环之后,您可以显示包含所有消息的消息框。
string message = "";
for (n = START_YEAR; n <= END_YEAR; n += INTERVAL)
{
a = p * (decimal)Math.Pow((1 + CONVERSION_FACTOR), n);
message += "Year" + " " + "Amount of deposit" + Environment.Newline + n + a + Environment.Newline ;
}
MessageBox.Show(message);
由于要显示的数据量可能比在MessageBox上查看的数据量大,因此最好考虑另一种表示方法。
编辑:这里有一个替代的解决方案,可以节省你的消息框的一些空间:
Dictionary<int, decimal> tempDict = new Dictionary<string, decimal>();
for (n = START_YEAR; n <= END_YEAR; n += INTERVAL)
{
a = p * (decimal)Math.Pow((1 + CONVERSION_FACTOR), n);
tempDict.Add(n, a);
}
string results = "";
foreach(var pair in tempDict)
{
results += pair.Key.ToString() + " " + pair.Value.ToString() + Environment.Newline;
}
MessageBox.Show("Year" + " " + "Amount of deposit" + Environment.Newline +
results);
在将结果放入消息框之前,必须先存储结果。这里我直接使用字符串,但另一个好的结构是List,如List。
的用法可能是:
string result = string.empty;
for (n = START_YEAR; n <= END_YEAR; n += INTERVAL)
{
a = p * (decimal)Math.Pow((1 + CONVERSION_FACTOR), n);
var temp = "Year" + " " + "Amount of deposit" + Environment.Newline + n + a ;
result = result + temp;
}
MessageBox.Show(result);
也就是说,您可能应该看看string.Format(),它使构建字符串变得更加容易和强大。
限制一般情况下关于代码质量的注释。根据迭代的次数,您可能需要使用StringBuilder来代替。
string message = "Year" + " " + "Amount of deposit";
for (n = START_YEAR; n <= END_YEAR; n += INTERVAL)
{
a = p * (decimal)Math.Pow((1 + CONVERSION_FACTOR), n);
message += Environment.Newline + n + a);
}
MessageBox.Show(message);