新手问个关于boolean的问题 。 boolean con = false;do{}while(!con);(!con) 为什么是false呢= = 不能理解 问了2个老师 没听明白 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不是吧。我怎么输出的是true的?package com.csdn;public class TestBoolean { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub boolean icon=false; do { System.out.println("!icon is "+!icon); } while(!icon); }}楼主再试下吧。 package test;public class test1 { public static void main(String[] args){ boolean con = false; do{ for(int i = 0;i<20;i++){ if(i == 3){ con = true; break; } System.out.println(con); } }while(!con); }} 2楼的你设置下断点看下 你的icon 一直是false = = 请问你查看的时候是查看的"!icon"吗 这样的 2楼 你把while(!icon);改成 while (con = true);看程序还运行么。 求解释啊 = = 楼上的都在没 如果照你们说的 con 是 true 那把条件改成 true 循环怎么一次都不执行了。 T T 很明显就是true了 老师怎么能不知道的呢 楼主,如果我没看错的话,结果如下:falsefalsefalse原因很简单啊,程序刚运行的时候,con为false,执行do里面的语句,一个for循环,在该循环中打印3个false,然后当i为3时,con置为true,退出for循环,判断while后面的条件,!con为false,所以程序外层循环结束,程序执行结束了!这个有什么问题吗? 你看楼上说的 = =他们都说 !con 是true 啊 = = 因为在con=ture的时候跳出了这个循环了 没有执行到System.out.println(con);这句代码 这个问题很简单的。con == false;那么 !con == true对吧!con仅仅是表达了while里面的表达式为真,而并没有改变con的值如果while里面的表达式为真,那么循环一直执行下去,变成死循环con的值永远没变都是false你当然看到con的值每次都是false了还有疑问吗? 明明是true,非说是falselz多调试看看 con一直都是false没错!con一直都是truelZ你不要把con和!con混为一谈啊 你看看你的代码吧,在定义for循环之后,我们对i进行增加,在前3次,也就是当i为0、1、2的时候程序不会执行if语句,所以就直接跳到后面,打印con,而此时的con没有经过修改的,是do~while循环外的那个值:false。 而在while里面的 !con 则就表示的是 true了 ,因此do~while能继续进行循环;接着,当i = 3 ,跳入if语句,接着把true赋值给con 然后跳出for循环,这个时候while中的那个!con的值就变成了false了。 这种问题讨论这么久啊一开始楼主没把代码发全后来楼主把完整的代码发上来,发现循环里改变了 con 的值,跳出来很正常啊 !con是true 但是con本身并没有改变还是false 求解:ArrayList 代码如何写 求一个语音文件生成器(100分)要能用的,生成好的文件也行 ssh上安装jdk问题 这样限制上传文件类型如何做到的?? 一个日期的异常。。。 一个简单的问题? 嘿嘿 MySql数据库驱动有疑问! 新手,重载小问题,在线等 新手请教!一个Applet显示Hello World!编译时找不调用类的包请问怎么设置??? 实现接口时出错,分数大大的有 在java文件中如何输出一个 EOF 标识 直接看最下面的问题
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean icon=false;
do
{
System.out.println("!icon is "+!icon);
}
while(!icon); }}楼主再试下吧。
package test;public class test1 {
public static void main(String[] args){
boolean con = false;
do{
for(int i = 0;i<20;i++){
if(i == 3){
con = true;
break;
}
System.out.println(con);
}
}while(!con);
}
}
改成 while (con = true);看程序还运行么。
false
false
false
原因很简单啊,程序刚运行的时候,con为false,执行do里面的语句,一个for循环,在该循环中打印3个false,然后当i为3时,con置为true,退出for循环,判断while后面的条件,!con为false,所以程序外层循环结束,程序执行结束了!这个有什么问题吗?
你看楼上说的 = =他们都说 !con 是true 啊 = =
con == false;
那么 !con == true对吧
!con仅仅是表达了while里面的表达式为真,而并没有改变con的值
如果while里面的表达式为真,那么循环一直执行下去,变成死循环
con的值永远没变都是false你当然看到con的值每次都是false了
还有疑问吗?
lz多调试看看
你看看你的代码吧,在定义for循环之后,我们对i进行增加,在前3次,也就是当i为0、1、2的时候
程序不会执行if语句,所以就直接跳到后面,打印con,而此时的con没有经过修改的,是do~while循环外的那个值:false。 而在while里面的 !con 则就表示的是 true了 ,因此do~while能继续进行循环;
接着,当i = 3 ,跳入if语句,接着把true赋值给con 然后跳出for循环,这个时候while中的那个!con的值就变成了false了。
后来楼主把完整的代码发上来,发现循环里改变了 con 的值,跳出来很正常啊
但是con本身并没有改变还是false