使用for循环并在消息框中显示多个结果

时间:2014-07-11 07:34:28

标签: c#

我试图看看是否有办法添加我在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循环中的局部变量。任何提示都会很感激。

3 个答案:

答案 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);