mimiwuqi 发表于 2020-4-8 00:07

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();
      //      }
      //    }
      //}
    }

Vjmms 发表于 2020-4-8 00:36

你写的 GetNum 方法需要一个 int 类型的返回值。在你的 if 语句里,一个分支有返回语句 return b,另一个分支执行到最后也找不到返回语句,所以编译器会报错。

MarioCrane 发表于 2020-4-8 00:39

while下一行 return b;

不苦小和尚 发表于 2020-4-8 06:27

while条件不符合,会执行下一句,所以要在后面return一个值

asq56747277 发表于 2020-4-8 07:41

在方法的最后一行加上 return 0;

X5ZJ 发表于 2020-4-8 07:41

这么简单为何用do while呢,且返回是一个静态的 Int 类型,输入非数字时就没有返回值了呢。或返回0也行啊 不能没有返回值。
学会F11调试。
先看语法,后实践,,,

chanshin 发表于 2020-4-8 08:25

Else分支少return返回值

zncliving 发表于 2020-4-8 08:38

代码执行到了 if里   就到不了else里   到了catch里就到不了try里    代码执行的方向就是提示错误里说的代码路径   , int GetNum(string s)你的方法返回了一个int, 错误出现了并非所有的代码路径都返回值   ,按字面意思,不是所有的代码路径都能返回 int   ,就自己按顺序找找 ,哪个路径没有返回int,

mimiwuqi 发表于 2020-4-8 08:40

MarioCrane 发表于 2020-4-8 00:39
while下一行 return b;

谢谢,原来是这样。。。

mimiwuqi 发表于 2020-4-8 08:43

X5ZJ 发表于 2020-4-8 07:41
这么简单为何用do while呢,且返回是一个静态的 Int 类型,输入非数字时就没有返回值了呢。或返回0也行啊...

注释是后来看老师给出的方法,上面是在没看老师的方法前自己琢磨的,就想也试试能不能行,毕竟初学,好多不懂的。
页: [1] 2 3
查看完整版本: C#关于方法的一个小练习我不理解,求教。