即使有中断,控制也不会从一个案例标签落到另一个案例标签



这是代码的一部分。

我收到错误"在案例 3 中,控制不能从一个案例标签落到另一个案例标签"。

尽管使用了 break 语句,但它不会被检测到。正确的方法是什么?

更新:错误在案例 3 中。不要费心在其他案件上浪费时间。

switch (output)
{
    case 1:
        int num, reverse = 0;
        Console.WriteLine("Enter a Number : ");
        num = int.Parse(Console.ReadLine());
        while (num != 0)
        {
            reverse = reverse * 10;
            reverse = reverse + num % 10;
            num = num / 10;
        }
        Console.WriteLine("Reverse of Number is : "+reverse);
        Console.ReadLine();
        break;
    case 2:
        int number, sum = 0, r,square;
        Console.WriteLine("Enter a Number : ");
        number = int.Parse(Console.ReadLine());
        while (number != 0)
        {
            r = number % 10;
            number = number / 10;
            square = r * r;
            sum = sum + square;
        }
        Console.WriteLine("Sum of square of Digits of the Number : "+sum);
        Console.ReadLine();
        break;
    case 3:
        Console.WriteLine("Enter 1 for AND 2 for OR and 3 for XOR Operation");
        int answer = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("Your 2 inputs are?");
        int inp1= Convert.ToInt32(Console.ReadLine());
        int inp2= Convert.ToInt32(Console.ReadLine());
        switch (answer)
        {
            case 1:
                int input3 = inp1 * inp2;
                System.Console.WriteLine("Output is" + input3);
                Console.ReadLine();
                break;
            case 2:
                int input4 = inp1 + inp2;
                System.Console.WriteLine("Output is" + input4);
                Console.ReadLine();
                break;
            case 3:
                if (inp1 == inp2)
                {
                    System.Console.WriteLine("OUTPUT IS 0");
                    Console.ReadLine();
                }
                else
                {
                    System.Console.WriteLine("Output is 1");
                    Console.ReadLine();
                }
                break;

你的问题是你只突破了内在case而不是外在,所以你遇到了一个失败的问题。

case 3 ...
             case 3:
                     if (inp1 == inp2)
                     {
                         System.Console.WriteLine("OUTPUT IS 0");
                         Console.ReadLine();

                     }
                     else
                     {
                         System.Console.WriteLine("Output is 1");
                         Console.ReadLine();
                     }
                     break;
 break; //break the outer case3
添加一个

goto case X来代替您希望跌倒发生的位置的break

。没关系。 在第一种情况 3 上需要一个表达式块。

case 3
{
    /// your other switch here
    break;
}

由于不使用范围块,您忽略了外部大小写语句。 它需要打破以及内部陈述。

相关内容

最新更新