黑马程序员技术交流社区

标题: for循环表达式 自学中的问题 [打印本页]

作者: 刘一阳    时间: 2014-6-11 23:36
标题: for循环表达式 自学中的问题
int y=0;
                                for(int x=1;x<=100;x++)
                                {
                                        if(x%7==0)
                                        y++;
                                    
                                }
这样是可以的
把if中的条件直接放到for中可以吗?
即for(int x=1;x<=100,x%7==0;x++)
为什么不可以?
作者: 爨庚轩    时间: 2014-6-11 23:50
for循环中第二个表达式必须是bool表达式,即必须能判断true or false。x<=100,x%7==0;这样写不是表达式,肯定也不是bool表达式
作者: Moonboy2014    时间: 2014-6-11 23:52
你好,不可以的。流程语句最重要的就是要记住格式!for循环的格式是:for(初始化表达式;循环表达式;循环后的操作表达式) 表达式中可以不限定形式,但是一定要是合法语句,你写的这个表达式x%7 == 0; java虚拟机读到这句话时都不知道是什么意思,就会报错,希望能帮到你:)
作者: 夏日蓝雪    时间: 2014-6-12 00:11
for循环语句的语法格式如下: 
  for(初始化语句;循环条件;迭代语句){ 
  语句序列 
  } 
  其中循环条件的结果为boolean类型,也就是说其结果只能是true或false。 把两条语句放在一起怎么判断真假?所以不能那样写。
作者: woshihq    时间: 2014-6-12 00:12
这是规定,第二项的值是TRUE 或false ,即比较
作者: 刘一阳    时间: 2014-6-12 00:24
还是没懂  脑子转不开   “==”不就是比较是否相等的吗?相等的话不就是ture 不相等不就是false?

作者: ╭月牙湾湾╮    时间: 2014-6-12 01:41
楼主你好,就你的代码看来你是想要得出能被7整除的100以内的整数有多少个。就你的思路而言,x%7==0是可以放在for循环里边的,可是它与x<=100需要用&&来连接,意思是x需要小于0,并且x要能被7整除才能满足循环条件。具体实现代码如下:
                for(int x=1; x<=100 && x%7==0 ;x++){
                        y = 0;
                        y++;
                }
最后运行的结果跟你之前的代码是一样的。希望能帮到你。
作者: 刘一阳    时间: 2014-6-12 01:47
懂了  这样就对了 它们单独拿出来执行应该都是bool   放到一起就无法判断  我没看到重点   谢谢你:loveliness:
作者: iWilliam    时间: 2014-6-12 02:29
七楼正解~
作者: 24岁???    时间: 2014-6-12 09:57
7楼的,你的循环都没法开始啊,第一次判断就是 false  就终止了。。。。。
楼主  x%7==0;是一个条件语句,但是考虑实际情况,for语句的判定条件一旦出现FALSE就会终止循环的,同时,for语句不允许出现多个判定条件,你给出两个条件,虚拟机不知道去用哪一只了
作者: 不去会死    时间: 2014-6-12 10:03
╭月牙湾湾╮ 发表于 2014-6-12 01:41
楼主你好,就你的代码看来你是想要得出能被7整除的100以内的整数有多少个。就你的思路而言,x%7==0是可以放 ...

我刚才还点了支持的,发现你这句式有问题啊,你真的有运行过吗?运行了结果为0.而且循环体就有问题啊,y=0; 出掉。出掉后还有问题,你这循环条件根本就有问题要不你测试一下         
        int y = 0;
            for(int x=1; x<=100 && x%7==0 ;x++){
             y++;
             System.out.println("a");
     }
            a根本就不打印
作者: 刘一阳    时间: 2014-6-12 11:30
确实啊  昨天没试  今天试了一下确实为0    不过我想通了为什么不能加这个条件了  谢谢各位了
作者: ╭月牙湾湾╮    时间: 2014-6-12 12:05
不去会死 发表于 2014-6-12 10:03
我刚才还点了支持的,发现你这句式有问题啊,你真的有运行过吗?运行了结果为0.而且循环体就有问题啊,y= ...

真不好意思,是我粗心了。昨天我确实有运行过,但是是和if语句一起运行的,我就打印了y的值,看到是正确的就回复了。现在回头看了一下,这样写for循环的条件确实为false。谢谢你指出我的问题。
作者: ╭月牙湾湾╮    时间: 2014-6-12 12:07
24岁??? 发表于 2014-6-12 09:57
7楼的,你的循环都没法开始啊,第一次判断就是 false  就终止了。。。。。
楼主  x%7==0;是一个条件语句, ...

真不好意思,我误导了楼主,我有罪。。。这样写for循环的条件确实为false。谢谢你指出我的问题。
作者: ╭月牙湾湾╮    时间: 2014-6-12 12:23
刘一阳 发表于 2014-6-12 11:30
确实啊  昨天没试  今天试了一下确实为0    不过我想通了为什么不能加这个条件了  谢谢各位了 ...

对不起啊楼主,我粗心了。希望楼主的学习之路一路顺畅!
作者: 小强9090    时间: 2014-6-12 12:43
看模糊了的样子
作者: 奋斗2014    时间: 2014-6-12 12:51
我觉得不可以,java中根本就没有这种格式的啊。你这样写程序能识别吗?
作者: 姿_`态    时间: 2014-6-12 13:05
╭月牙湾湾╮ 发表于 2014-6-12 01:41
楼主你好,就你的代码看来你是想要得出能被7整除的100以内的整数有多少个。就你的思路而言,x%7==0是可以放 ...

class ForforTest4
{
        public static void main(String[] args)
        {
                int y=0;
                for(int x=0;x<100&&x%7==0;x++)
                {
                        y++;
                }
                System.out.println(y);
        }
}
这个的结果是1
作者: ╭月牙湾湾╮    时间: 2014-6-12 13:10
姿_`态 发表于 2014-6-12 13:05
class ForforTest4
{
        public static void main(String[] args)

是的,是我弄错了。
作者: 姿_`态    时间: 2014-6-12 13:13
首先 记住 for循环表达式格式   :  for(初始化表达式;循环表达式;循环后的操作表达式)

按照楼主的意思,最好的办法是改成下面这样
class ForforTest4
{
        public static void main(String[] args)
        {
                int y=0;
                for(int x=0;x<100&&x%7==0;x++)
                {
                        y++;
                }
                System.out.println(y);
        }
}

最后输出的结果是1,为什么呐,因为中间是循环表达式,他的值是boolean类型的,true就循环,false就不循环
x<100&&x%7==0
首先x=0   左边满足,右边也满足,执行y++  所以y=1
第二次循环  x=1  x%7!=0所以不满足,退出,所以最后y=1;

所以 这样不行,最好的办法,就是在for循环里加一个if判断。



作者: 24岁???    时间: 2014-6-12 15:09
╭月牙湾湾╮ 发表于 2014-6-12 12:23
对不起啊楼主,我粗心了。希望楼主的学习之路一路顺畅!

总有大意的时候啦,:handshake    美女你好
作者: 黄梁梦想享    时间: 2014-6-12 15:21
马上电脑走一遍
作者: ╭月牙湾湾╮    时间: 2014-6-12 15:29
24岁??? 发表于 2014-6-12 15:09
总有大意的时候啦,    美女你好

呵呵 你好




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