System.out.print('A')你看看输出是什么,带进去就知道了吧?

解决方案 »

  1.   

    for ( foo('A'); foo('B')&&(i<2); foo('C')){
    i++ ;
    foo('D');
    }
    首先运行foo('A')初始化,打印A
    然后判断foo('B')&&(i<2),打印B,此处为true进入循环
    i++ ;
    foo('D');打印D ,i=1
    运行 foo('C')打印C,接着判断foo('B')&&(i<2);,打印B,为true进入循环
    foo('D');打印D ,i=2
    接着运行foo('C')打印C,接着判断foo('B')&&(i<2);,打印B,为false退出循环结束
      

  2.   

    我记得这个题和华为的一个面试题很类似。这里面的static boolean foo(char c)方法返回布尔值true或false,只是在返回前将传入的值打印了一下,打印完了就返回true,所以每调用一下这个方法,就会将传入的值打印一下。下面轮到调用它的代码了:
    for ( foo('A'); foo('B')&&(i<2); foo('C')){
    i++ ;
    foo('D');
    }
    这个就是要考验你对for循环流程的熟悉程度了。进入for循环,先进入第一个分号前的代码:
    foo('A') 而且只运行一次(相当于初试条件)打印了 A ,这里的代码没有什么严格要求,没有返回值要求,也就是返回的true没什么作用。然后进入第二个分号前的代码:
    foo('B')&&(i<2),foo('B')先运行,打印了 B 并且返回true,程序得以进行下去, i 此时为 0,小于2,条件结果true,foo('B')&&(i<2)总条件结果为true&&true=true ,这时就进入循环里了,不会运行括号里剩余的foo('C'),进入循环体以后不用说了,i先变成 1,再用foo('D')打印了D,注意,随后才运行foo('C'),也就是for后面小括号里的最后一节代码,它总是在循环体里代码运行完了,并且新一轮循环条件判断前运行,在这里打印了 C ,然后进行下一轮循环的判断(for括号里两个分号之间的代码),依次打印了 B D,而且 i 加 1 等于了2,就再次在循环结尾,下一轮循环判断前运行了foo('C'),打印了C,for循环开始了判断,foo('B')返回了true,没问题打印了 B,i<2就不对了,返回了false,总结果true&&false=false,循环退出,进入了下面的代码,所以总的结果应该(在网吧,没运行,呵呵)是:ABDCBDC,楼上说的也很对,添一下足,呵呵
      

  3.   

    噢,刚注意到写错了,应该是ABDCBDCB,少写了一个B