我想构建制表符分隔的购物车内容字符串。我使用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;
}
我该如何解决这个问题?
旁注:最终我会用它在网页上显示,但此时我想了解为什么它不会返回所有项目的文本。
答案 0 :(得分:12)
您只能看到最后一个,因为您在每次循环迭代中都要进行分配。您需要+=
代替=
。
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
来构建大字符串。
答案 1 :(得分:8)
你真的应该在这里使用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();
答案 2 :(得分:3)
正如其他答案所指出的那样,您需要使用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();
答案 3 :(得分:2)
您正在使用循环中的下一项替换变量的值...尝试添加它。
display += String.Format(i + 1 + "." + "\t" + Movie.MovieName + "\t" + "£" + Movie.MovieCost.ToString());
答案 4 :(得分:2)
您正在使用=符号来设置您需要使用的显示文本+ =或字符串构建器类。
答案 5 :(得分:2)
您正在覆盖显示变量。尝试连续+=
答案 6 :(得分:2)
您需要连接每个条目以显示如下(注意+=
):
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;
}
答案 7 :(得分:2)
您在每个循环中覆盖display
。
最简单的更改是将=
更改为+=
:
// V-----
display += String.Format(i + 1 + "." + "\t" + Movie.MovieName + "\t" + "£" + Movie.MovieCost.ToString());
但如果你有很多字符串,你可能会发现StringBuilder
更高效。
答案 8 :(得分:1)
我想你想要这个。
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;
}