如何从C#中的循环外部访问循环内部的变量?
我曾尝试将变量放入循环内部和循环外部,以便其他函数可以使用该变量,但仍然会出错。我使用菜单1创建一个列表。然后我想能够菜单4打印列表和平均值。我要在菜单1上做这一切,只是为了看看它是否有效。但我们需要把它分解。1) 列表和4)显示如何从C#中的循环外部访问循环内部的变量?,c#,loops,variables,if-statement,C#,Loops,Variables,If Statement,我曾尝试将变量放入循环内部和循环外部,以便其他函数可以使用该变量,但仍然会出错。我使用菜单1创建一个列表。然后我想能够菜单4打印列表和平均值。我要在菜单1上做这一切,只是为了看看它是否有效。但我们需要把它分解。1) 列表和4)显示 bool exit = false; do { Console.WriteLine(""); Console.WriteLine("1. Create age list");
bool exit = false;
do
{
Console.WriteLine("");
Console.WriteLine("1. Create age list");
Console.WriteLine("2. Add age to list");
Console.WriteLine("3. Remove age from list");
Console.WriteLine("4. Display ages and average");
Console.WriteLine("5. exit");
Console.WriteLine("");
string input = Console.ReadLine();
Console.WriteLine("");
List<int> ages = new List<int>();
int totalAges = 0;
int age;
if (input == "1")
{
//List<int> ages = new List<int>();
//int totalAges = 0;
//User Input
Console.WriteLine("How many ages do you want to enter? ");
Console.WriteLine("");
//While loop for TryParse
while (!int.TryParse(Console.ReadLine(), out totalAges))
{
Console.WriteLine("Please enter a valid number");
Console.WriteLine("");
}
while (ages.Count != totalAges)
{
// Read grade
System.Console.WriteLine("Enter Grade: ");
//int age;
while (!int.TryParse(System.Console.ReadLine(), out age))
{
System.Console.WriteLine("Please enter a valid age.");
}
ages.Add(age);
}
for (int index = 0; index < ages.Count(); index++)
{
Console.WriteLine("");
Console.WriteLine($"Age { ages[index] }");
Console.WriteLine("");
totalAges = ages.Sum();
}
double avg = 0.0;
avg = totalAges / (ages.Count);
Console.WriteLine("");
Console.WriteLine($"The average age was { avg}");
}
else if (input == "2")
{
exit = true;
}
else if (input == "3")
{
exit = true;
}
else if (input == "4")
{
for (int index = 0; index < ages.Count(); index++)
{
Console.WriteLine("");
Console.WriteLine($"Age { ages[index] }");
Console.WriteLine("");
totalAges = ages.Sum();
}
double avg = 0.0;
avg = totalAges / (ages.Count);
Console.WriteLine("");
Console.WriteLine($"The average age was { avg}");
}
else if (input == "5")
{
exit = true;
}
else
{
Console.WriteLine("How hard is it to type 1 or 2? Try again!");
}
} while (exit == false);
bool exit=false;
做
{
控制台。写线(“”);
Console.WriteLine(“1.创建年龄列表”);
Console.WriteLine(“2.将年龄添加到列表中”);
Console.WriteLine(“3.从列表中删除年龄”);
Console.WriteLine(“4.显示年龄和平均值”);
控制台写入线(“5.退出”);
控制台。写线(“”);
字符串输入=Console.ReadLine();
控制台。写线(“”);
列表年龄=新列表();
整数总计=0;
智力年龄;
如果(输入=“1”)
{
//列表年龄=新列表();
//整数总计=0;
//用户输入
Console.WriteLine(“您想输入多少年龄?”);
控制台。写线(“”);
//TryParse的While循环
而(!int.TryParse(Console.ReadLine(),out totalAges))
{
Console.WriteLine(“请输入有效数字”);
控制台。写线(“”);
}
while(ages.Count!=totalAges)
{
//阅读成绩
System.Console.WriteLine(“输入等级:”);
//智力年龄;
而(!int.TryParse(System.Console.ReadLine(),过期))
{
System.Console.WriteLine(“请输入有效年龄”);
}
年龄。添加(年龄);
}
对于(int index=0;index
我认为在这种情况下,最好不要在方法中声明您试图访问的变量,而应该在类中声明。如果希望每次调用该方法时都将其重置,那么每次都可以在该方法中实例化它。我还要做的是将if语句分解成它们自己的方法。这将使您拥有一个更加面向对象的结构化代码。一旦我将变量移到循环之外,您可以创建一个新的变量吗?我得到的值为零,这会给我一个除以零的错误。运行1菜单后,我需要变量的值。看起来循环的每次迭代都会重置年龄列表,因此当您将它们添加到opt 1中时,它会重置,并且在opt 4中计数变为0。在进入循环之前,应该声明并初始化年龄,否则会在每个循环中重新创建年龄,从而失去以前的输入。当然,在对ages变量执行任何操作之前,您应该检查是否可以安全地使用它。例如,在条件“4”中,您应该检查(ages.Count==0)。。。错误…还有一个小错误。totalAges=ages.Sum();应在显示单个值的for..循环之外执行。对插入的每个年龄重复相同的不变操作。毫无意义