Java有几种类型的选择语句:单向if语句、双向if语句、嵌套if语句、switch语句和条件表达式。
单向if语句是指当且仅当条件为true时执行一个动作。
例如,单向if语句的语法如下:
if (布尔表达式) { 语句(组); }
当指定条件为true时单向if语句执行一个操作。而当条件为false时什么也不干。但是,如果你希望在条件为false时也能执行一些动作,该怎么办?你可以使用双向if语句。根据条件为true或false,双向if语句可以指定不同的操作。
例如,下面是双向if语句的语法:
if (布尔表达式) { 布尔表达式为真时执行的语句(组); } else{ 布尔表达式为假时执行的语句(组); }
if或if……else语句中的语句可以是任意合法的Java语句,甚至可以是其他的if或if……else语句。外层if语句里的内层if语句称为是嵌套的。内层if语句还可以包含其他的if语句;事实上,对嵌套的深度没有限制。
例如,下面就是一个嵌套的if语句:
if(i>k) { if(j>k) System.out.println("i and j are greater than k"); } else System.out.println("i is less than or equal to k");
语句if(j>k)被嵌套在语句if(i>k)内。
嵌套的if语句可用于实现多重选择。
为了全面考虑所有的情况,需要使用嵌套的if语句。过多地使用嵌套的if语句会使程序很难阅读。Java提供switch语句来有效地处理多重条件问题。
例如,下面是switch语句的完整语法:
switch (switch表达式) { case 值1:语句(组)1; break; case 值2:语句(组)2; break; …… case 值N:语句(组)Nv break; default:默认情况下执行的语句(组) }
有时可能需要给有特定条件限制的变量赋值。
例如,下面的语句在x大于0时给y赋值1;当x小于等于0时给y赋值-1.
if(x>0) y=1; else y=-1;
在这个例子中,还可以选择使用如下条件表达式,也能达到同样的效果。
y = ( x > 0) ? 1 : -1;
1)忘记必要的括号
2)在if行出现错误的分号
3)对布尔值的冗余测试
4)悬空else出现的歧义