boolean con = false;
do{}while(!con);
(!con) 为什么是false呢= = 不能理解 问了2个老师 没听明白

解决方案 »

  1.   

    不是吧。我怎么输出的是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); }}楼主再试下吧。
      

  2.   


    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);
    }
    }
      

  3.   

    2楼的你设置下断点看下  你的icon 一直是false = =
      

  4.   

    请问你查看的时候是查看的"!icon"吗
      

  5.   

    这样的 2楼 你把while(!icon);
    改成 while (con = true);看程序还运行么。
      

  6.   

    求解释啊  = = 楼上的都在没    如果照你们说的  con 是 true 那把条件改成 true 循环怎么一次都不执行了。 T T
      

  7.   

    很明显就是true了  老师怎么能不知道的呢
      

  8.   

    楼主,如果我没看错的话,结果如下:
    false
    false
    false
    原因很简单啊,程序刚运行的时候,con为false,执行do里面的语句,一个for循环,在该循环中打印3个false,然后当i为3时,con置为true,退出for循环,判断while后面的条件,!con为false,所以程序外层循环结束,程序执行结束了!这个有什么问题吗?
      

  9.   


    你看楼上说的 = =他们都说 !con 是true 啊 = =
      

  10.   

    因为在con=ture的时候跳出了这个循环了  没有执行到System.out.println(con);这句代码
      

  11.   

    这个问题很简单的。
    con == false;
    那么 !con == true对吧
    !con仅仅是表达了while里面的表达式为真,而并没有改变con的值
    如果while里面的表达式为真,那么循环一直执行下去,变成死循环
    con的值永远没变都是false你当然看到con的值每次都是false了
    还有疑问吗?
      

  12.   

    明明是true,非说是false
    lz多调试看看
      

  13.   

    con一直都是false没错!con一直都是truelZ你不要把con和!con混为一谈啊
      

  14.   


    你看看你的代码吧,在定义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了。 
      

  15.   

    这种问题讨论这么久啊一开始楼主没把代码发全
    后来楼主把完整的代码发上来,发现循环里改变了 con 的值,跳出来很正常啊
      

  16.   

    !con是true 
    但是con本身并没有改变还是false