【发布时间】:2012-04-06 02:42:17
【问题描述】:
我正在尝试开发一种方法来检查用户输入,如果输入通过验证,仅返回。
这就是我想做的:
- 用户输入输入
- 检查输入值
- 如果输入满足逻辑,则返回该值,否则再次调用该函数。
这真的是我想要的,但编译器声明not all code paths return a value:
public static int UserInput(){
int input = int.Parse(Console.ReadLine());
if (input < 1 || input > 4){
Console.Write("Invalid Selection. Enter a valid Number (1,2,3 or 4): ");
if (input < 1 || input > 4) UserInput();
} else{
return input;
}
}
但是,这是满足编译器的以下代码。
public static int UserInput()
{
int input = int.Parse(Console.ReadLine());
if (input < 1 || input > 4)
{
Console.Write("Invalid Selection. Enter a valid Number (1,2,3 or 4): ");
if (input < 1 || input > 4)
{
UserInput();
return -1; // Never reached, but must be put in to satisfy syntax of C#
}
return input; // Never reached, but must be put in to satisfy syntax of C#
}
else
{
return input;
}
}
这种工作,但我得到奇怪的结果。如果用户在第一次输入时输入 input,即 1、2、3 或 4(即 if 语句计算为 false),则返回的输入就是用户输入的任何内容。但是,如果用户输入的值 不是 1、2、3 或 4 然后输入一个有效数字,那么程序将执行以下操作:
- 返回输入;
- 跳转到子if语句并运行UserInput();
- 然后返回 -1。
【问题讨论】:
标签: c#