我有以下代码:
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#落到另一个”
答案 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 关键字显然是合适的选择。