吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1442|回复: 27
收起左侧

[求助] C#关于方法的一个小练习我不理解,求教。

[复制链接]
mimiwuqi 发表于 2020-4-8 00:07
注释的部分是老师讲的,为什么我写的那个方法总是“并非所有的代码路径都返回值”,不知道错在哪里,请老师赐教,谢谢!
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
不苦小和尚 发表于 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也行啊  ...

注释是后来看老师给出的方法,上面是在没看老师的方法前自己琢磨的,就想也试试能不能行,毕竟初学,好多不懂的。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 19:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表