C# 返回错误:并非所有代码路径都返回值
我正在尝试开发一种方法,该方法将检查用户的输入,如果输入通过验证,仅返回输入 这就是我想做的:C# 返回错误:并非所有代码路径都返回值,c#,C#,我正在尝试开发一种方法,该方法将检查用户的输入,如果输入通过验证,仅返回输入 这就是我想做的: 用户输入 检查输入值 如果输入满足逻辑,则返回该值,否则再次调用该函数 这确实是我想要的,但编译器声明并非所有代码路径都返回值: public static int UserInput(){ int input = int.Parse(Console.ReadLine()); if (input < 1 || input > 4){ Console.Wri
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;
}
}
publicstaticintuserinput(){
int input=int.Parse(Console.ReadLine());
如果(输入<1 | |输入>4){
Console.Write(“无效选择。输入有效数字(1、2、3或4):”;
如果(输入<1 | |输入>4)用户输入();
}否则{
返回输入;
}
}
但是,以下代码满足编译器的要求
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;
}
}
publicstaticintuserinput()
{
int input=int.Parse(Console.ReadLine());
如果(输入<1 | |输入>4)
{
Console.Write(“无效选择。输入有效数字(1、2、3或4):”;
如果(输入<1 | |输入>4)
{
用户输入();
return-1;//从未到达,但必须输入以满足C的语法要求#
}
return input;//从未到达,但必须输入以满足C的语法#
}
其他的
{
返回输入;
}
}
这种方法有效,但我得到了奇怪的结果。如果用户要输入一个输入
,该输入在第一次执行时为1、2、3或4(即如果
语句的计算结果为false
),则返回的输入是用户输入的内容。但是,如果用户输入的值不是1、2、3或4,然后输入一个有效数字,则程序将执行以下操作:
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): ");
return UserInput();
}
else
return input;
}
您需要
返回UserInput()代码>从外观上看。它只是看起来像一个将钻下去,并在底部返回不断调用自己,直到一个令人满意的Constant满足
你要做的是向下钻取,让它返回一个值,然后在上面返回-1
您还通过再次检查输入来复制自己。看起来这可以归结为以下几点:
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): ");
return UserInput();
}
else
return input;
}
您需要返回UserInput()代码>从外观上看。它只是看起来像一个将钻下去,并在底部返回不断调用自己,直到一个令人满意的Constant满足
你要做的是向下钻取,让它返回一个值,然后在上面返回-1
您还通过再次检查输入来复制自己。看起来这可以归结为以下几点:
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): ");
return UserInput();
}
else
return input;
}
为什么不简化为以下内容(不需要else语句或第二个if)。还请注意,递归调用应该返回以使其正常工作:
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): ");
return UserInput(); //<--- problem was here
}
return input;
}
publicstaticintuserinput()
{
int input=int.Parse(Console.ReadLine());
如果(输入<1 | |输入>4)
{
Console.Write(“无效选择。输入有效数字(1、2、3或4):”;
return UserInput();//为什么不简化为以下内容(不需要else语句或第二个if)。还要注意,递归调用应该返回,以便其正常工作:
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): ");
return UserInput(); //<--- problem was here
}
return input;
}
publicstaticintuserinput()
{
int input=int.Parse(Console.ReadLine());
如果(输入<1 | |输入>4)
{
Console.Write(“无效选择。输入有效数字(1、2、3或4):”;
return UserInput();//不需要第二个if(input<1 | | input>4)
不需要第二个if(input<1 | | input>4)
非常感谢,我不知道你可以返回一个函数。@dgamma3是的,它是这样做的一种截断方式:int returnValue=UserInput();return returnValue;…..这就是它的基本功能。它返回的不是函数,而是函数返回的值。非常感谢,我不知道你可以返回函数。@dgamma3是的,这是一种截断的方法,可以执行以下操作:int returnValue=UserInput();return returnValue;…..这基本上就是它所做的。它返回的不是函数,而是函数返回的值