if语句

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语句