使用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;
}
我该如何解决这个问题?
附带说明:最终我将使用它在网页上显示,但在这一点上,我想了解为什么它不返回所有项目的文本。
您只看到最后一个,因为您在每个循环迭代中都进行赋值。您需要执行+=
而不是=
。
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;
}