if语句的完整形式如下所示:
if(condition) statement;else statement;
if和else的目标都是语句,else语句是可选的。if和else的目标也可以是语句块。使用if语句块的基本形式如下:
if(condition) { statement sequence } else { statement sequence }
如果条件表达式为真,那么执行if的目标;否则,退出if,去执行else的目标。两个目标是不能同时执行的。控制if语句的条件表达式必须生成boolean结果。
为了演示if,我们创建并开发一个适合儿童的简单计算机猜字母游戏。在游戏的第一个版本中,程序让玩家输入A~Z之间的一个字母。如果玩家按下了键盘上正确的字母,程序就会显示消息作为相应:
public static void main(String[] args) throws java.io.IOException { char ch,answer = 'K'; System.out.println("I'm thinking of a letter between A and Z:"); System.out.print("Can you guess it:"); ch = (char)System.in.read(); if(ch == answer) System.out.println("Right"); }
运行效果:
I'm thinking of a letter between A and Z: Can you guess it:K Right
1.嵌套if语句
嵌套if语句是作为另一个if或else语句的目标的if语句。嵌套if语句在程序设计中非常普遍。Java中,关于嵌套if语句需要记住的是,else语句总是和同一代码块中最近的且没有else与之匹配的if语句相匹配,如下所示:
if(i == 10) { if(j < 20) a = b; if(k > 100) c = d; else a = c; //this else refers to if k > 100 } else a = d; //this else refers to i == 10
正如注释所示,最后一个else与if(j<20)是不匹配的,因为他们不在同一个代码块中。与最后一个else匹配的是if(i==10)。而与内层else匹配的是if(k>100),因为他是同一代码块中最近的if语句。
我们还可以通过添加嵌套语句来改善上面的字母游戏,以使玩家在猜错是得到相应。
public static void main(String[] args) throws java.io.IOException { char ch,answer = 'K'; System.out.println("I'm thinking of a letter between A and Z:"); System.out.print("Can you guess it:"); ch = (char)System.in.read(); if(ch == answer) { System.out.println("Right"); } else { if(ch < answer) System.out.println("too low"); else System.out.println("too high"); } }
运行效果:
I'm thinking of a letter between A and Z: Can you guess it:J too low
2.if-else-if阶梯状结构
if-else-if阶梯状结构及基于嵌套if语句的常见的程序设计结构,形式如下:
if(condition) statement sequence else if(condition) statement sequence else statement sequence
条件表达式被从上到下一一检查,一旦找到为真的条件,就执行与其相关的语句,而后面的语句就会被跳过。如果条件表达式都不为真,就执行最后一个else语句。最后一个else往往被作为默认条件,即如果所有其他条件测试失败,就执行最后一个else语句。如果没有最后一个else语句,而且其他条件都为假,就不会有动作发生。
public static void main(String[] args) throws java.io.IOException { int x; for(x = 0;x < 6;x++) { if(x == 1) System.out.println("x is one"); else if(x == 2) System.out.println("x is two"); else if(x == 3) System.out.println("x is three"); else if(x == 4) System.out.println("x is four"); else System.out.println("x is not between 1 and 4"); } }
运行效果:
x is not between 1 and 4 x is one x is two x is three x is four x is not between 1 and 4
如你所见,只有在前面所有的if语句都不满足时,才执行默认的else语句