转换到do while的问题,控制不能从一个case标签到另一个case标签

时间:2011-11-19 15:45:26

标签: c# visual-studio

我有以下代码:

        do{

        Console.Write("Please Input a Value: ");
        userInput = Console.ReadLine();

        v = userInput.ToString().Substring(0, 1);
        amount = Convert.ToInt32(userInput.ToString().Substring(1, 1));

        switch(v)
        {
            case "a": mother.incr1(amount);
            case "s": mother.incr10(amount);
            case "d": mother.incr100(amount);
            case "f": mother.incr1000(amount);
            case "=": Console.WriteLine("The total amount is: {0} \n", mother.current);
            case "r": mother.current = 0;
        }

        }while(mother.overflow() != true);

当我添加了do while时,它返回了一个错误“控件无法从所有案例行中的一个案例标签#caselabelname#落到另一个”

3 个答案:

答案 0 :(得分:1)

你需要放一个"休息;"在每个陈述之间

  switch(v) 
    { 
        case "a": 
                mother.incr1(amount); 
                break;
        case "s": 
               mother.incr10(amount); 
               break;
        etc.etc. 
    } 

答案 1 :(得分:1)

由于v一次只能是一个字符,因此没有理由让案例落空。你应该在每个案例的末尾添加一个break

答案 2 :(得分:1)

C#从C语言继承了switch语句。其中有案例陈述失败,这是一个难以诊断的难以诊断的错误来源。在你的代码中,掉头总是将mother.current设置为0。

C#语言要求您明确终止案例陈述以避免此陷阱。您必须使用 break 让代码在switch语句后面的语句中恢复。或者使用 goto case 指示它继续执行到另一个case语句。 break 关键字显然是合适的选择。