我试图看看是否有办法添加我在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);
}
我注意到这是不会显示我想要的内容,而是会显示多个消息框,但我的问题是如果我从for循环中显示show messagebox行,我无法显示从消息框内的for循环计算的结果,因为它无法使用for循环中的局部变量。任何提示都会很感激。
答案 0 :(得分:0)
您可以在循环外创建一个字符串变量,并在循环内连接它。然后在循环之后,您可以显示包含所有消息的消息框。
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上查看的数据量,因此最好考虑另一种表示方法。
编辑:这是一个替代解决方案,可以在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);
答案 1 :(得分:0)
您必须在将结果放入消息框之前存储结果。 这里我直接使用了一个字符串,但是另一个好的构造是像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(),这使得构建字符串变得更加容易和强大。
答案 2 :(得分:0)
限制关于代码质量的评论。 根据迭代次数,您可能希望使用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);