C#关于方法的一个小练习我不理解,求教。
注释的部分是老师讲的,为什么我写的那个方法总是“并非所有的代码路径都返回值”,不知道错在哪里,请老师赐教,谢谢!class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入一个数字");
string input = Console.ReadLine();
int num=GetNum(input);
Console.WriteLine(num);
Console.Read();
}
public static int GetNum(string s)
{
bool a;
int b = 0;
do
{
a = int.TryParse(s, out b);
if (a)
{
return b;
}
else
{
Console.WriteLine("请重新输入");
}
} while (a == false);
}
//public static int GetNum(string s)
//{
// while(true)
// {
// try
// {
// int a = Convert.ToInt32(s);
// return a;
// }
// catch
// {
// Console.WriteLine("重新输入");
// s = Console.ReadLine();
// }
// }
//}
} 你写的 GetNum 方法需要一个 int 类型的返回值。在你的 if 语句里,一个分支有返回语句 return b,另一个分支执行到最后也找不到返回语句,所以编译器会报错。 while下一行 return b; while条件不符合,会执行下一句,所以要在后面return一个值 在方法的最后一行加上 return 0; 这么简单为何用do while呢,且返回是一个静态的 Int 类型,输入非数字时就没有返回值了呢。或返回0也行啊 不能没有返回值。
学会F11调试。
先看语法,后实践,,, Else分支少return返回值 代码执行到了 if里 就到不了else里 到了catch里就到不了try里 代码执行的方向就是提示错误里说的代码路径 , int GetNum(string s)你的方法返回了一个int, 错误出现了并非所有的代码路径都返回值 ,按字面意思,不是所有的代码路径都能返回 int ,就自己按顺序找找 ,哪个路径没有返回int, MarioCrane 发表于 2020-4-8 00:39
while下一行 return b;
谢谢,原来是这样。。。 X5ZJ 发表于 2020-4-8 07:41
这么简单为何用do while呢,且返回是一个静态的 Int 类型,输入非数字时就没有返回值了呢。或返回0也行啊...
注释是后来看老师给出的方法,上面是在没看老师的方法前自己琢磨的,就想也试试能不能行,毕竟初学,好多不懂的。