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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hwlllr 中级黑马   /  2014-1-20 19:48  /  1027 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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;
        }
我没理解为什么写在循环外面,都没有判断条件。

评分

参与人数 1技术分 +1 收起 理由
船长 + 1

查看全部评分

3 个回复

倒序浏览
因为return语句的作用是返回一个值并退出当前方法。按照你写的方法,当number=9时,i=2时,if判断为false,进入else,返回值为true。循环了一轮就结束,完全没有达到目的,还输出了错误的结果。把return写在循环外面,则表示只要number能被i整除就跳出该方法,返回值为true。
回复 使用道具 举报
你的返回值应该在for循环的外面因为程序不能确定成功执行了 for循环中的语句 假设你传入的number是0 没有进入for循环 程序不知道返回什么 当然报错了

评分

参与人数 1技术分 +1 收起 理由
船长 + 1

查看全部评分

回复 使用道具 举报
首先有个逻辑问题:
判断是不是质数要从2开始,一直到数字本身是不是有整除数,注意要从2开始,到数字本身
那么这里有个循环,i从2到num-1,是不是有整除,

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

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



评分

参与人数 1技术分 +2 收起 理由
船长 + 2

查看全部评分

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