使用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循环。如有任何提示,不胜感激。

使用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);