黑马程序员技术交流社区

标题: 返回值问题 [打印本页]

作者: hwlllr    时间: 2014-1-20 19:48
标题: 返回值问题
本帖最后由 hwlllr 于 2014-1-20 22:20 编辑

判断一个质数(只能整除1和本身的数为质数),然后我写了个方法,返回true和flase来判断是否为质数,但是方法出了点问题,我是如下这么写的
        public static bool ZhiShu(int number)
        {
            for (int i = 2; i < number; i++)
            {
                if (number % i == 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }
提示我Program.ZhiShu(int):并非所有的代码路径都返回值。 然后看视频正确的如下
        public static bool ZhiShu(int number)
        {
            for (int i = 2; i < number; i++)
            {
                if (number % i == 0)
                {
                    return false;
                }
            }
            return true;
        }
我没理解为什么写在循环外面,都没有判断条件。


作者: 矫情    时间: 2014-1-20 21:01
因为return语句的作用是返回一个值并退出当前方法。按照你写的方法,当number=9时,i=2时,if判断为false,进入else,返回值为true。循环了一轮就结束,完全没有达到目的,还输出了错误的结果。把return写在循环外面,则表示只要number能被i整除就跳出该方法,返回值为true。
作者: haxyek    时间: 2014-1-20 21:08
首先有个逻辑问题:
判断是不是质数要从2开始,一直到数字本身是不是有整除数,注意要从2开始,到数字本身
那么这里有个循环,i从2到num-1,是不是有整除,

有可能这个数不能被2整除,但是被3整除了,比如9这是一个循环过程,

而你的代码,判断:从2开始判断,如果能被2整除那么返回false,如果不能被2整除,是不是就返回true了呢?而9这个数字。。你懂得。








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2