我正在做一种用户选择他/她想要列出的杂货数量的方法。之前通过intGroceryAmount(从strGroceryAmount解析)
声明了杂货项目金额现在,如果用户想要将另一个项目添加到购物清单,则必须将数组大小增加1,并且必须显示购物清单中的所有项目,包括新添加
我尝试将1添加到数组大小,以便现在有一个额外的空间,并为新的杂货项目分配用户输入的空白区域。不幸的是,这是发生错误的地方
P.S:最后显示的循环是"假设"显示杂货店的所有商品
strNumofPurchaseArray = new string[intGroceryAmount + 1];
System.Console.WriteLine("What is the new item you wish to enter?");
strNewItemInput = System.Console.ReadLine();
strNumofPurchaseArray[intGroceryAmount + 1] = strNewItemInput;
System.Console.WriteLine("\nYour new list of Grocery item is shown below:\n");
while (intNewItemCounter < intGroceryAmount)
{
System.Console.WriteLine("Grocery item #" + (intNewItemCounter + 1) + "is: " + strNumofPurchaseArray[intNewItemCounter]);
intNewItemCounter++;
答案 0 :(得分:2)
阵列从0开始。你在第4行犯了一个错误,应该是
strNumofPurchaseArray[intGroceryAmount] = strNewItemInput;
您正在创建一个intGroceryAmount项的数组,但数组中的最高索引是intGroceryAmount - 1,最低的是0。
答案 1 :(得分:0)
如果您希望能够调整列表大小,我建议您使用List<string>
,当您拨打Add
时会自动调整大小。如果您必须坚持使用数组,那么您应该查看Array.Resize
调整大小的方法,它会自动将旧数组中的项目复制到新数组中。然后,您应该使用foreach
循环来枚举项目。
答案 2 :(得分:0)
Arrays在C#中不会那样工作。当您事先了解结构的大小时,它们的效果最佳。如果您需要以动态方式添加和删除项目,最好的选择是List<T>
类
var strNumofPurchaseArray = new List<string>();
System.Console.WriteLine("What is the new item you wish to enter?");
strNewItemInput = System.Console.ReadLine();
strNumofPurchaseArray.Add(strNewItemInput);
System.Console.WriteLine("\nYour new list of Grocery item is shown below:\n");
for(int i=0; i< strNumofPurchaseArray.Count; i++)
{
System.Console.WriteLine("Grocery item #" + (i + 1) + "is: " + strNumofPurchaseArray[i]);
}