A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 甘昌德 中级黑马   /  2013-12-14 11:16  /  1670 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 甘昌德 于 2013-12-16 14:16 编辑

我在看飞行棋视频的时候,看到老师直接复制了一段代码然后直接调用,有些不太理解,前面的视频中老师也没讲过这个例子,我觉得应该是方法的重载和传参数合起来?不是很理解,代码如:,这里是用两个方法,一个方法返回了值,一个没有,不太明白具体是怎么执行的。我自己照着写了个,然后改动了下:        static int ReadInt(int min, int max)        {
            int number = 0;
            while (true)
            {
                try
                {
                    number = Convert.ToInt32(Console.ReadLine());
                    if (number < min || number > max)
                    {
                        Console.WriteLine("只能输入{0}-{1}之间的数字", min, max);
                        continue;
                    }
                }
                catch
                {
                    Console.WriteLine("只能输入数字,请重新输入!");
                    continue;
                }
                break;
            }
            return number;
        }
我写的这个和上面那个功能是类似,代码不一样,两个有啥区别么?



8 个回复

倒序浏览
上面的图片不清楚,我敲了下代码:
        static int ReadInt()
        {
            int i = ReadInt(int.MinValue, int.MaxValue);
            return i;
        }
        static int ReadInt(int min, int max)
        {
            while (true)
            {
                try
                {
                    int number = Convert.ToInt32(Console.ReadLine());
                    if (number < min || number > max)
                    {
                        Console.WriteLine("只能输入{0}-{1}之间的数字,请重新输入!", min, max);
                        continue;
                    }
                    return number;
                }
                catch
                {
                    Console.WriteLine("只能输入数字,请重新输入!");
                }
            }
        }
回复 使用道具 举报
没什么大的区别,就是是运行的时候跳转有稍微的区别,你那个流程图个人感觉有点乱,还是下面这个清晰点,,老师写的这个代码有什么不明白的呢????
回复 使用道具 举报
u010209195 发表于 2013-12-14 13:14
没什么大的区别,就是是运行的时候跳转有稍微的区别,你那个流程图个人感觉有点乱,还是下面这个清晰点,, ...

乱么?排版的问题吧,发表的时候是排好的,发完后就变这样了。。
老师那里,我不太明白为什么要用两个方法,然后第二个方法的循环是怎么停下来的?是return number;这个代码?这个不是返回一个值的么
回复 使用道具 举报
没有什么大的区别呀,只是一段代码中当满足输入条件时通过break跳出循环,在循环结束之后返回值,另一段代码实在满足输入条件时通过return直接返回值。
回复 使用道具 举报
甘昌德 发表于 2013-12-14 11:28
上面的图片不清楚,我敲了下代码:
        static int ReadInt()
        {

这里没有什么区别就是一个方法有参数一个没有参数,这两个方法就是方法重载。第一个方法调用了第二个方法,只是调用方法 int i = ReadInt(int.MinValue, int.MaxValue);中的参数必须要初始化,这里用的这两个参数是系统中默认的值。
回复 使用道具 举报
红鹰(Jake) 发表于 2013-12-15 13:55
这里没有什么区别就是一个方法有参数一个没有参数,这两个方法就是方法重载。第一个方法调用了第二个方法 ...

我试了下老师说的那两个方法,只用下面那个方法也可以,编译没出错,程序也正常运行,这样有什么BUG么?第一个方法我设了断点,程序没进到去。。
回复 使用道具 举报
甘昌德 发表于 2013-12-15 21:01
我试了下老师说的那两个方法,只用下面那个方法也可以,编译没出错,程序也正常运行,这样有什么BUG么? ...

应该没有什么Bug,只是对你的这个问题还是不怎么清楚,建议你看看视频关于调试的
回复 使用道具 举报
红鹰(Jake) 发表于 2013-12-16 12:58
应该没有什么Bug,只是对你的这个问题还是不怎么清楚,建议你看看视频关于调试的 ...

好的,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马