需要帮助理解Java程序流程

时间:2013-11-12 07:55:43

标签: java

代码:

public static char f( char c ){

 System.out.print( c++ );
       return c--;
    }

    public static void main(String[] args)
    {
       if( f('j') == 'k' || f('f') == 'f'){
          System.out.println( f('d') );
       }
    }

有人可以向我解释为什么打印“jde”? 直觉上,我认为它会打印出“kged”。

2 个答案:

答案 0 :(得分:1)

c++System.out.print之后递增,因此它首先打印'j'。

if语句的第二部分未被评估,因为f('j')返回'k',因为在返回后应用了减量。

然后打印d因为f('d')'被调用,首先打印'd'然后打印函数'e'的结果。

如果您想了解问题为什么会出现问题,特别是如果出现意外情况,那么熟悉调试器是个好主意。通过它,您可以逐步执行每条指令,并在每个执行步骤中查看程序的状态。

作为练习,编写一个使用这些功能的程序,但打印qed(quod erat demonstrandum)。

答案 1 :(得分:0)

在if条件中,f('j')=='k'为真,这就是为什么不检查其他条件的原因。这里f('j')方法打印j并返回'k',返回c后再次'j'。现在在System.out.println(f('d')); f('d')打印d并返回以main方法打印的e。所以输出是jde