它应该打印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" );
答案 0 :(得分:4)
因为date++
是后增量表达式,这意味着首先执行语句,然后更改变量的值。以下是根据this source
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。