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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁耀今 中级黑马   /  2013-3-14 00:43  /  1325 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 梁耀今 于 2013-3-14 09:34 编辑

发现一个问题,提醒一下你们!
public static boolean isPrime(int x)
{
     boolean b;
     for(int i=2; i<=15; i++)
     {
           if(x%i == 0)
             {
                   b = false;
             }
             else
              {
                    b = true;
               }
      }
       return b;
}
看到上面的程序了么?也许有人是觉得没问题的啊,但是编译的时候这个问题恰恰是有问题的,提示b尚未初始化变量。
也许有人也会问这有什么的呢。那我再给你看看另外一个程序。
public static boolean isPrime(int x)
{
     boolean b;
      if(x%i == 0)
       {  
         b = false;
       }
        else
        {
               b = true;
        }
}

在这个程序里是能通过编译的。但是少了else语句也是不能通过,这是为什么呢,大家自己好好想想把!   


我只是来提醒一下大家而已的,别吐我!!!(觉得没什么的,自己默默的走把!)

4 个回复

倒序浏览
两段程序没一个能编译通过的!true还打错了!还缺少返回语句!
回复 使用道具 举报
我看不太明白楼主你是想写什么样一个方法。。是想判断输入的x是否是素数吗?还是只是想随便写一个for循环语句和if判断语句?
其实这两段函数都有一些小小的问题。。。但都应该是不能编译通过的。。
错误1:public static boolean isPrime(int x)  首先这个方法这样声明是应该有返回值的,而你却没有写return语句
错误2:boolean型的值应该是"true"而不是"ture",通假字可通不过编译哦。。
错误3:第二段代码i 这个变量没有声明。。。也会通不过编译。。

如果需要写一个判断输入的x是否是素数的方法按照你的思路可以这样写:
  1.         public static boolean isPrime(int x)
  2.         {
  3.              for(int i=2; i<x; i++)
  4.              {
  5.                      if(x%i == 0)
  6.                              return false;
  7.              }
  8.              return true;
  9.         }
复制代码
这些问题虽小,但是需要我们不停的去发现这些小问题,我们才可以进步啊!希望我们能一起成长~加油啊!

点评

你没明白楼主的意思,楼主主要表达的是 b的初始化问题,在楼主代码正确的前提下  发表于 2013-3-14 02:22
回复 使用道具 举报
本帖最后由 梁耀今 于 2013-3-14 09:43 编辑
于腾飛 发表于 2013-3-14 01:23
两段程序没一个能编译通过的!true还打错了!还缺少返回语句!

噢,没注意,打错了!你还没发现重要的部分
回复 使用道具 举报
本帖最后由 梁耀今 于 2013-3-14 09:43 编辑
turalyang@gmail 发表于 2013-3-14 01:31
我看不太明白楼主你是想写什么样一个方法。。是想判断输入的x是否是素数吗?还是只是想随便写一个for循环语 ...

哦,代码我是打错了,没注意,下次我注意下!我说的不是这个意思

我要说的是初始化值的问题。在for循环里也许我们通常认为b已经初始化值了,但编译器却说没初始化值,而if语句里,却能编译通过,但如果缺少else语句也是不能编译通过的。这就是我要说明的问题,这是我从代码库看到的,拿出来分享一下而已
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马