我有一个if / else语句的公共字符串方法。当我没有在else上放置一个return关键字时,我得到错误并非所有代码路径都返回值但是当我将返回值添加到else语句时,我得到一个使用未分配的本地变量'结果' 。当我返回"请输入有效的号码&#34 ;; 时,当我输入任何字母时,控制台上都不显示任何内容。我需要让用户知道他们输入的内容无法转换为整数。
public string AddNumbers(string userInputString)
{
int result;
int num2 = RandomNumberInt();
bool isTrue = int.TryParse(userInputString, out int num1);
if (isTrue == true)
{
result = num1 + num2;
Console.WriteLine("Adding your number and a random number, please wait...");
Thread.Sleep(1000);
Console.WriteLine("{0} + {1} = {2}", num1, num2, result);
isTrue = true;
return result.ToString();
}
else
{
return "Please enter a valid number";
}
}
答案 0 :(得分:0)
这是因为你的方法要求返回。但既然你有一个if,那么就这样说吧
团队负责人:嘿bob我希望你能完成这份工作。
在这里,你期待鲍勃完成你的工作,但你提出了条件
你:如果我今天可以去办公室,先生。
因为你有If条件,如果你今天不能去怎么办?这是否意味着你明天和其他任何一天都无法完成这项工作?这就是为什么它说并非所有代码路径都返回一个值,因为你从未给出其他/默认值
回到你的代码中,你问
if (isTrue == true)
{
result = num1 + num2;
Console.WriteLine("Adding your number and a random number, please wait...");
Thread.Sleep(1000);
Console.WriteLine("{0} + {1} = {2}", num1, num2, result);
isTrue = true;
return result.ToString();
}
但如果不是这样,那么它会转到其他地方。您可以设置int result = 0,因此它是从start运行时定义的,它不会返回未分配的局部变量的错误。
public string myMethod()
{
int result = 0; //This must have a default value so in else part it is not unassigned when you return.
int num2 = RandomNumberInt();
bool isTrue = int.TryParse(userInputString, out int num1);
if(isTrue)
{
//do something in result here
return result.toString(); //This will return your in value as string
}
else
{
return "Your message as string" // This will return any string to provide for string return of the method
}
}
关于不显示字符串“请输入有效数字”的问题是另一个问题。您还必须发布什么方法调用将使用返回的字符串的AddNumbers方法。使用问题在于该方法,因为你的if和else格式正确;
答案 1 :(得分:0)
每当您对应用程序逻辑感到困惑时,将逻辑分解为多个部分通常会很有帮助。这使您有机会思考问题并决定任务如何累加以获得最终结果。
从高层开始,勾勒出整体流程:
for(i in 1:(length(s)-1)) print(s[c(i:(i+1))])
然后实施各个部分:
static public void MethodNameThatDescribesThisActivity()
{
var userResponse = ReadIntegerFromConsole("Please enter an integer.");
var randomNumber = RandomNumberInt();
DisplaySum(userResponse, randomNumber, 1000);
}
如果你这样做,它通常会为你解决逻辑问题。它还使您的代码更易于阅读。