C#关于switch...case 如何选择哪个case..

来源:百度知道 编辑:UC知道 时间:2024/05/18 08:33:34
我想用switch...case做一个程序,大致设想如下:

int n;
switch(n)
case 0:
if(a>b)
{
...
n=0;
}
else
n=2;
break;

case 1:
if(a<b)
{
...
n=3;
}
else
n=2;
break;

case 2:
if(a>b)
{
...
n=2;
}
else
goto case 1;
break;

case 3:
if(a<b)
{
...
n=3;
}
else
goto case 0;
break;

default:
break;

我现在遇到的问题是 当我这样执行的时候会报错,错误在第二行的switch(n)这句,错误是说Use of unassigned local variable 'n',我自己理解为需要在第一行 int n;给n设定一个量,但是当我设定n的量之后,比如int n=0;,错误是没有了,但执行的结果与我的预期不同,大家应该能看到我在程序中case结束前有改变n的值,也即是说我的要求是当一个case完成时会改变n的值,程序会自动跳转去我设定的case,但是当我在开头设定了n=0之后,就变成了在case里设定好的n值break跳出后每次程序都会把n的值改到0,就进不到我所期望进入的case中了,每次都会从0开始,如果不设定int n=0又无法运行程序。

请问各位是不是有什么高招解决这个问题,我现在是很头大,而且也比较着急,希望各位能火种送碳。。在线等答案。。也感谢各位耐心看完我的问题。。因为我C#其实基本功也不是很扎实,可能问题也表述的不是很清楚,希望大家能看明白。再次感谢。。。
漏了点内容怕大家不明白,比如为什么ca

N作为传入参数传入 你需要定义一下N 一个很简单的方法可以帮你测试一下
static public int test(int a,int b)
{
if (a > b)
{
return 0;
}
else
{
return 1;
}
}
static void Main(string[] args)
{
int a1 = Convert.ToInt32(Console.ReadLine());
int b1 = Convert.ToInt32(Console.ReadLine());
int n = test(a1,b1);
switch(n)
{
case 0:Console.WriteLine("0");break;
case 1:Console.WriteLine("1");break;
default:Console.WriteLine("2");break;
}
Console.ReadLine();
}

你不给 i 赋初值,程序肯定会报错

这个n的值应该由参数传入,不然你程序的入口在哪,i不能不赋值