当date = 24时,为什么if(date ++> = 25)为false?

时间:2014-07-13 14:33:08

标签: java

它应该打印if语句,而是打印else ...我无法弄清楚出了什么问题。

boolean age = true;
int date = 24;

if ( age == true && date++ >= 25 )
     System.out.println( "Exto Libra" );
else
     System.out.println( "No go, sorry" );

4 个答案:

答案 0 :(得分:4)

因为date++是后增量表达式,这意味着首先执行语句,然后更改变量的值。以下是根据this source

的post和pre运算符之间的差异
  

Post Increment(n ++):首先执行语句,然后将值增加一。

     

Pre Increment(++ n):首先将值增加1然后执行语句。

在java文档网站here上也有非常好的解释和java教程。

在你的情况下,你正在这样做,

//This is post increment so else block will be executed
if ( age == true && date++ >= 25 ) //on the execution of this statement the value of date is still 24
   System.out.println( "Exto Libra" );
else
   System.out.println( "No go, sorry" );

而不是这个,

//But if you use ++date as below then if condition will execute
if ( age == true && ++date >= 25 ) //on the execution of this statement the value of date is 25
   System.out.println( "Exto Libra" );
else
   System.out.println( "No go, sorry" );

答案 1 :(得分:3)

您应该将date++更改为++date

当您撰写date++时,它首先取date的值,并且只在将其加1后才会显示。

当你写++date时,它首先加1,然后取值。所以在你的情况下,当它进行比较date++ >= 25时,date的值仍为24

示例:

int i = 7;
System.out.println(i);
System.out.println(i++);
System.out.println(i);

输出:

7
7
8

int i = 7;
System.out.println(i);
System.out.println(++i);
System.out.println(i);

输出:

7
8
8

答案 2 :(得分:0)

您应该将++添加到日期中,以便首先执行它而不是逻辑操作。

你也可以使用if(age)而不是if(age == true)。

答案 3 :(得分:0)

这是因为post减量运算符(在这种情况下为“date ++”),首先使用变量并检查条件 date ++> = 25 ,然后递增并使其为25。