使用for循环打印列表中的项目

本文关键字:项目 列表 打印 for 循环 使用 | 更新日期: 2023-09-27 17:58:38

我想构建购物车内容的制表符分隔字符串。我使用for循环循环遍历一个列表,以便输出购物车中的项目。然而,只输出该列表中的最后一个项目。

public string Display()
{
    CartClass CartList = CartClass.GetCart();
    String display = "" ;
    for (int i = 0; i < CartList.CartList.Count(); i++)
    {
        Movies Movie = CartList.CartList[i];
        display = String.Format(i + 1 + "." + "'t" + 
           Movie.MovieName + "'t" + "£" + Movie.MovieCost.ToString());
    }
    return display;
}

我该如何解决这个问题?

附带说明:最终我将使用它在网页上显示,但在这一点上,我想了解为什么它不返回所有项目的文本。

使用for循环打印列表中的项目

您只看到最后一个,因为您在每个循环迭代中都进行赋值。您需要执行+=而不是=

public string Display()
{
    CartClass CartList = CartClass.GetCart();
    String display = "" ;
    for (int i = 0; i < CartList.CartList.Count(); i++)
    {
        Movies Movie = CartList.CartList[i];
        display += String.Format(i + 1 + "." + "'t" + 
            Movie.MovieName + "'t" + "£" + Movie.MovieCost.ToString()) + "'n";
    }
    return display;
}

请注意,通常最好使用StringBuilder来构建大型字符串。

您真的应该在这里使用StringBuilder

System.Text.StringBuilder sb = new StringBuilder();
for (int i = 0; i < CartList.CartList.Count(); i++)
{
    Movies Movie = CartList.CartList[i];
    sb.Append( String.Format(i + 1 + "." + "'t" + Movie.MovieName + "'t" + "£" + Movie.MovieCost.ToString()));
}
return sb.ToString();

您正在使用=符号来设置需要使用+=或字符串生成器类的显示文本。

正如其他答案所指出的,您需要使用Concatnation运算符+来附加字符串,我建议您使用StringBuilder

StringBuilder sb = new StringBuilder();
for (int i = 0; i < CartList.CartList.Count(); i++)
    {
        Movies Movie = CartList.CartList[i];
        sb .Append(String.Format(i + 1 + "." + "'t" + Movie.MovieName + "'t" + "£" + Movie.MovieCost.ToString());
    }
    return sb.ToString();

您正在用循环中的下一项替换变量的值。。。尝试添加。

display += String.Format(i + 1 + "." + "'t" + Movie.MovieName + "'t" + "£" + Movie.MovieCost.ToString());

您正在覆盖显示变量。尝试连接+=

您需要连接每个条目以显示如下(注意+=):

public string Display()
{
    CartClass CartList = CartClass.GetCart();
    String display = "" ;
    for (int i = 0; i < CartList.CartList.Count(); i++)
    {
        Movies Movie = CartList.CartList[i];
        display += String.Format(i + 1 + "." + "'t" + Movie.MovieName + "'t" + "£" + Movie.MovieCost.ToString());
    }
    return display;
}

您正在覆盖每个循环中的display

最简单的更改是将=更改为+=:

    //      V-----
    display += String.Format(i + 1 + "." + "'t" + Movie.MovieName + "'t" + "£" + Movie.MovieCost.ToString());

但如果你有很多字符串,你可能会发现StringBuilder更具性能。

我想你想要这个。

public string Display()
{
CartClass CartList = CartClass.GetCart();
String display = "" ;
for (int i = 0; i < CartList.CartList.Count(); i++)
{
    Movies Movie = CartList.CartList[i];
    display += String.Format(i + 1 + "." + "'t" + Movie.MovieName + "'t" + "£" + Movie.MovieCost.ToString());
}
return display;
}