C# 为什么调试时在代码中获取System.String[]?
我正在为初学者做c语言的最后一个项目,但我似乎无法让我的列表正常工作。它也会在被订单“填满”后自动关闭C# 为什么调试时在代码中获取System.String[]?,c#,C#,我正在为初学者做c语言的最后一个项目,但我似乎无法让我的列表正常工作。它也会在被订单“填满”后自动关闭 class Burgare { private string[] hamburger = new string[24]; private int no_burger = 0; public void add_burger()//Ordering of burgers { Console.Clear(); //Clears console
class Burgare
{
private string[] hamburger = new string[24];
private int no_burger = 0;
public void add_burger()//Ordering of burgers
{
Console.Clear(); //Clears console to make it look cleaner
while (true)
{
int Burger_option = 0;
do
{
Console.WriteLine("");// The options user can choose from
Console.WriteLine("Please choose burgers from our menu:");
Console.WriteLine("-------Burgers--------");
Console.WriteLine("1 Original One 109");
Console.WriteLine("2 Pig & Cow 109");
Console.WriteLine("3 Spice & Nice 109");
Console.WriteLine("4 Green One 109");
Console.WriteLine("0 Go back to main menu");
Console.WriteLine("----------------------");
Console.WriteLine("");
try //Making sure the user only picks what is on the menu
{
Burger_option = int.Parse(Console.ReadLine());
}
catch
{
Console.WriteLine("You can only choose what is on the menu!");
}
switch (Burger_option) //Depending on the number user presses on keyboard different burgers will be added to order
{
case 1:
Console.WriteLine("You've added the Original One to your order");
Console.WriteLine("If you're done press 0 to go back to the main menu");
hamburger[no_burger] = "Original One";
break;
case 2:
Console.WriteLine("You've added the Pig & Cow to your order");
Console.WriteLine("If you're done press 0 to go back to the main menu");
hamburger[no_burger] = "Pig & Cow";
break;
case 3:
Console.WriteLine("You've added the Spice & Nice to your order");
Console.WriteLine("If you're done press 0 to go back to the main menu");
hamburger[no_burger] = "Spice & Nice";
break;
case 4:
Console.WriteLine("You've added the Green One to your order");
Console.WriteLine("If you're done press 0 to go back to the main menu");
hamburger[no_burger] = "Green One";
break;
case 0: //Sends user back to main menu
Run();
break;
}
no_burger++; //Adds burger
} while (no_burger != 0);
if (no_burger <= 25) //Maximum number of orders
{
Console.WriteLine("The restaurant can't take more than 24 orders of burgers at the time");
Run(); //Sends user back to main menu when the order is over 24
}
}
}
public void print_order()
{
Console.WriteLine("-Your current order-");
foreach (var burger in hamburger) //Showing a list of what is in the order
{
Console.WriteLine(hamburger);
if (burger != null)
Console.WriteLine(burger);
else
Console.WriteLine("Empty space"); //Making empty space to show where you can add more burgers
}
}
输入24个顺序后,我得到了错误System.IndexOutOfRangeException:“索引超出了数组的界限。”我环顾了一下,但仍然不知道如何修复代码。我想让它在告诉用户订单已满后返回主菜单
对于我的第二个问题System.String[]问题,它在我输入“打印顺序”时出现。它表现为
System.String[]
空位
System.String[]
空位
等等如果可能的话,我想完全删除它或者至少用1,2,3…等替换它。首先,请每个问题只发布一个问题;你在这里描述了很多问题,但实际上只问了一个问题。如果您有多个问题,请发布多个问题 为什么调试时在代码中获取System.String[] 默认情况下,C在打印类型时提供类型名称,并且打印字符串数组。要将字符串数组转换为字符串,请使用字符串类型的Join方法。注意不要将其与序列上的连接扩展方法混淆 它也会在被订单“填满”后自动关闭 当控制台程序的控件到达Main的末尾时,它终止该程序。如果您希望其他事情发生,请编写代码,指明您希望发生的事情 输入24个顺序后,我得到了错误System.IndexOutOfRangeException:“索引超出了数组的界限。”我环顾了一下,但仍然不知道如何修复代码。我想让它在告诉用户订单已满后返回主菜单 您已经为24件物品预留了空间,并且尝试访问第25件物品。那是一个致命的错误。不要那样做。您需要检测并预防这种情况 如果您想让它在告诉用户订单已满后返回主菜单,请编写代码来执行此操作。怎样因为主菜单显然是一个可以发生多次的事情,所以你需要把它放在一个循环中。您已经编写了两个循环;把更多的东西放在循环中 当我们查看您的代码时,还有一些好建议: 现在开始使用C语言的约定。您编写了Console.WriteLine,然后创建了一个方法print\u order。遵循框架设计者设定的模式,而不是你自己编造的东西。类型和方法应该是CasedLikeThis。 永远不要在try-catch中使用int.Parse。这就是int.TryParse的作用! 你的程序有一个bug;如果有人输入,比如说,7,会发生什么?处理那个案子!
你永远不会真正检查你在do…while循环中添加了多少项-你只会在循环完成后检查。这就是为什么当您尝试添加第25项时它会崩溃 在do…while循环中移动逻辑来处理这个问题,您将不再得到异常 另外,您的阵列只能容纳24个项目,但我假设您的目标是25个项目
另外,由于您是编程新手,您可能想看看@Eric Lppert的-这将为您节省大量时间。您还应该阅读有关诊断问题的内容。删除Console.WriteLinehamburger;对于第一个问题,最好是自己调试并找出问题所在,在添加23项之后添加一个断点。对于第二个问题,您可能需要删除Console.WriteLinehamburger;从loopAdd-in中,您可以在一个Console.ReadLine的末尾添加一个main,这样程序就不会终止。OP将逻辑放入检查中,以查看它们是否已达到do…while循环之外的最大项数,因此,它不会阻止用户在达到最大数量后继续尝试添加内容,除非用户恰好在正确的时间输入了“0”。@EJoshuaS:这就是我所暗示的,当我说在循环中放入更多内容时,你需要检测这种情况。我想你可能就是这样指。。。只是更明确地说明问题所在,因为OP是编程的新手。