黑马程序员技术交流社区

标题: for语句else语句 [打印本页]

作者: 梁耀今    时间: 2013-3-14 00:43
标题: for语句else语句
本帖最后由 梁耀今 于 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语句也是不能通过,这是为什么呢,大家自己好好想想把!   


我只是来提醒一下大家而已的,别吐我!!!(觉得没什么的,自己默默的走把!)
作者: 于腾飛    时间: 2013-3-14 01:23
两段程序没一个能编译通过的!true还打错了!还缺少返回语句!
作者: 杨冉    时间: 2013-3-14 01:31
我看不太明白楼主你是想写什么样一个方法。。是想判断输入的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.         }
复制代码
这些问题虽小,但是需要我们不停的去发现这些小问题,我们才可以进步啊!希望我们能一起成长~加油啊!
作者: 梁耀今    时间: 2013-3-14 09:33
本帖最后由 梁耀今 于 2013-3-14 09:43 编辑
于腾飛 发表于 2013-3-14 01:23
两段程序没一个能编译通过的!true还打错了!还缺少返回语句!

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

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

我要说的是初始化值的问题。在for循环里也许我们通常认为b已经初始化值了,但编译器却说没初始化值,而if语句里,却能编译通过,但如果缺少else语句也是不能编译通过的。这就是我要说明的问题,这是我从代码库看到的,拿出来分享一下而已




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