C#return不是';t让用户知道无效条目
我有一个带有if/else语句的公共字符串方法。当我没有在else上放置return关键字时,我会得到一个错误,不是所有代码路径都返回一个值,但是当我将return添加到else语句时,我会使用未分配的局部变量“result”。当我返回“请输入一个有效的数字”,当我键入任何字母时,控制台上不会显示任何内容。我需要让用户知道他们在中输入了无法转换为整数的内容C#return不是';t让用户知道无效条目,c#,if-statement,return,C#,If Statement,Return,我有一个带有if/else语句的公共字符串方法。当我没有在else上放置return关键字时,我会得到一个错误,不是所有代码路径都返回一个值,但是当我将return添加到else语句时,我会使用未分配的局部变量“result”。当我返回“请输入一个有效的数字”,当我键入任何字母时,控制台上不会显示任何内容。我需要让用户知道他们在中输入了无法转换为整数的内容 public string AddNumbers(string userInputString) { int res
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";
}
}
这是因为你的方法要求回报。但是既然你有一个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,以便在else运行时从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的格式正确 每当您对应用程序逻辑感到困惑时,将逻辑分解为若干部分通常是有帮助的。这给了你一个思考问题的机会,并决定任务的总和如何给你最终的结果 从高层开始,勾勒出整个流程:
static public void MethodNameThatDescribesThisActivity()
{
var userResponse = ReadIntegerFromConsole("Please enter an integer.");
var randomNumber = RandomNumberInt();
DisplaySum(userResponse, randomNumber, 1000);
}
然后执行以下步骤:
static public int ReadIntegerFromConsole(string prompt)
{
int result;
while (true)
{
Console.WriteLine(prompt);
var input = Console.ReadLine();
var ok = int.TryParse(input, out result);
if (ok) break;
Console.WriteLine("That isn't a valid integer.");
}
return result;
}
static public void DisplaySum(int userNumber, int randomNumber, int delay)
{
var sum = userNumber + randomNumber;
Thread.Sleep(delay);
Console.WriteLine("The total of {0} + {1} = {2}", userNumber, randomNumber, sum);
}
如果你这样做,它通常会为你解决逻辑问题。它还使代码更易于阅读。是否显示函数return?调用AddNumbers的代码是什么?else中没有调用console.WriteLine,这就是为什么您在屏幕上看不到任何输出。只需将定义
result
的位置移动到if
中设置它的位置,就像在int result=num1+num2
中一样,因为您不需要它在if
之外。至于没有得到错误消息,你需要实际调用Console.WriteLine,我认为这个方法根本不需要返回类型,但这取决于你如何使用它。你能告诉我们电话号码吗?