x = 100;
y = 200;
while(++x<--y);
system.out.println(x);
为什么输出结果是150,按我的思路结果应该是101,谁能给我讲讲啊。
我的理解就是 :X自加了,得101,Y自减了,得199,101<199,所以条件为真,但没有循环体,所以什么都不执行。最后直接输出X 为101。
12 个解决方案
#1
程序是从上面一直向下运行,首先在符合条件的情况下执行 while(++x <--y);
而在149前都是符合条件的,这个语句其实被执行了49次,才跳到System.out.println(x);这一句的.
按照你的理解,while(++x <--y)只执行了一次,但是102,103同样的符合while条件的.呵呵
所以不会马上打印出第一次符合条件的X,而是到了149后,在条件判断前自加一,判断条件不成立才跳到下一句.
如果写成while(++x <--y){
System.out.println(x);
}
那么就会打印出101~~~149所有的数.
而在149前都是符合条件的,这个语句其实被执行了49次,才跳到System.out.println(x);这一句的.
按照你的理解,while(++x <--y)只执行了一次,但是102,103同样的符合while条件的.呵呵
所以不会马上打印出第一次符合条件的X,而是到了149后,在条件判断前自加一,判断条件不成立才跳到下一句.
如果写成while(++x <--y){
System.out.println(x);
}
那么就会打印出101~~~149所有的数.
#2
由于你的while循环后面有一个分号所造成的。你把分号去掉就可以了。
因为你的while循环没有大括号,所以你的代码的意思其实是如果++x的值小于--y的值就什么也不做,继续循环
知道++x不再小于--y才退出循环执行打印x的值
因为你的while循环没有大括号,所以你的代码的意思其实是如果++x的值小于--y的值就什么也不做,继续循环
知道++x不再小于--y才退出循环执行打印x的值
#3
写成while(++x <--y){
System.out.println(x);
}
那么就会打印出101~~~149所有的数
楼上的说的是……
System.out.println(x);
}
那么就会打印出101~~~149所有的数
楼上的说的是……
#4
条件不满足的时候才结束循环,执行循环以后的语句
#5
while(++x <--y); ==== while(++x <--y){}
#6
while(++x<--y){}
小括号里的内容不就是个判断的条件吗,真正要循环的东西应该在大括号里啊。
为什么小括号里的条件自己循环起来了?
还是没太明白
小括号里的内容不就是个判断的条件吗,真正要循环的东西应该在大括号里啊。
为什么小括号里的条件自己循环起来了?
还是没太明白
#7
int x,y;
x = 100;
y = 200;
while(x <y){++x;--y;};
system.out.println(x);
你的语句相当于这样,当然会循环
x = 100;
y = 200;
while(x <y){++x;--y;};
system.out.println(x);
你的语句相当于这样,当然会循环
#8
while语句是直到循环到while(false)才结束
#9
就是因为++x<--y成立阿。所以肯定是要执行循环体,由于你就写了个分号,循环体为空,什么也没执行,但是循环条件返回++x<--y仍然为true所以继续执行语句++x<--y来计算循环条件的返回值为true还是false以此类推,知道++x<--y返回为false的时候循环才退出这个是基础的问题了。初学总会有些东西把自己给饶进取,建议出去吸根烟,可能回来就想明白了。呵呵
#10
while 后面多了一个";"
#11
明白了 谢谢
#12
改前
int x,y;
x = 100;
y = 200;
while(++x <--y){
//......
};
System.out.println(x);
改后
int x,y;
x = 100;
y = 200;
while(++x <--y){
System.out.println(x);
};
int x,y;
x = 100;
y = 200;
while(++x <--y){
//......
};
System.out.println(x);
改后
int x,y;
x = 100;
y = 200;
while(++x <--y){
System.out.println(x);
};
#1
程序是从上面一直向下运行,首先在符合条件的情况下执行 while(++x <--y);
而在149前都是符合条件的,这个语句其实被执行了49次,才跳到System.out.println(x);这一句的.
按照你的理解,while(++x <--y)只执行了一次,但是102,103同样的符合while条件的.呵呵
所以不会马上打印出第一次符合条件的X,而是到了149后,在条件判断前自加一,判断条件不成立才跳到下一句.
如果写成while(++x <--y){
System.out.println(x);
}
那么就会打印出101~~~149所有的数.
而在149前都是符合条件的,这个语句其实被执行了49次,才跳到System.out.println(x);这一句的.
按照你的理解,while(++x <--y)只执行了一次,但是102,103同样的符合while条件的.呵呵
所以不会马上打印出第一次符合条件的X,而是到了149后,在条件判断前自加一,判断条件不成立才跳到下一句.
如果写成while(++x <--y){
System.out.println(x);
}
那么就会打印出101~~~149所有的数.
#2
由于你的while循环后面有一个分号所造成的。你把分号去掉就可以了。
因为你的while循环没有大括号,所以你的代码的意思其实是如果++x的值小于--y的值就什么也不做,继续循环
知道++x不再小于--y才退出循环执行打印x的值
因为你的while循环没有大括号,所以你的代码的意思其实是如果++x的值小于--y的值就什么也不做,继续循环
知道++x不再小于--y才退出循环执行打印x的值
#3
写成while(++x <--y){
System.out.println(x);
}
那么就会打印出101~~~149所有的数
楼上的说的是……
System.out.println(x);
}
那么就会打印出101~~~149所有的数
楼上的说的是……
#4
条件不满足的时候才结束循环,执行循环以后的语句
#5
while(++x <--y); ==== while(++x <--y){}
#6
while(++x<--y){}
小括号里的内容不就是个判断的条件吗,真正要循环的东西应该在大括号里啊。
为什么小括号里的条件自己循环起来了?
还是没太明白
小括号里的内容不就是个判断的条件吗,真正要循环的东西应该在大括号里啊。
为什么小括号里的条件自己循环起来了?
还是没太明白
#7
int x,y;
x = 100;
y = 200;
while(x <y){++x;--y;};
system.out.println(x);
你的语句相当于这样,当然会循环
x = 100;
y = 200;
while(x <y){++x;--y;};
system.out.println(x);
你的语句相当于这样,当然会循环
#8
while语句是直到循环到while(false)才结束
#9
就是因为++x<--y成立阿。所以肯定是要执行循环体,由于你就写了个分号,循环体为空,什么也没执行,但是循环条件返回++x<--y仍然为true所以继续执行语句++x<--y来计算循环条件的返回值为true还是false以此类推,知道++x<--y返回为false的时候循环才退出这个是基础的问题了。初学总会有些东西把自己给饶进取,建议出去吸根烟,可能回来就想明白了。呵呵
#10
while 后面多了一个";"
#11
明白了 谢谢
#12
改前
int x,y;
x = 100;
y = 200;
while(++x <--y){
//......
};
System.out.println(x);
改后
int x,y;
x = 100;
y = 200;
while(++x <--y){
System.out.println(x);
};
int x,y;
x = 100;
y = 200;
while(++x <--y){
//......
};
System.out.println(x);
改后
int x,y;
x = 100;
y = 200;
while(++x <--y){
System.out.println(x);
};