菜鸟笔记 -- Chapter 5.3.2 条件语句

数据分析侠 2017-12-11

5.3.2 条件语句

条件语句可根据不同的条件执行不同的语句。条件语句包括if条件语句和switch多分支语句。

5.3.2.1 if条件语句

If条件语句是一个重要的编程语句,它用于告诉程序在某个条件成立的情况下执行某段程序,而在另一种情况下执行另外的语句。

使用if条件语句,可选择是否要执行紧跟在条件之后的那个语句。关键字if之后是作为条件的“布尔表达式”,如果该表达式返回的结果是true,则执行其后的语句;若为false,则不执行if条件之后的语句。If条件语句可分为简单的if条件语句、if...else语句和if...else if多分支语句。

5.3.2.1.1 简单的if语句

语法格式如下:

if(布尔表达式){
  语句序列
}

l布尔表达式:必要参数,表示它最后返回的结果必须是一个布尔值。它可以是一个单纯的布尔变量或常量,或者使用关系或布尔运算符的表达式。

l语句序列:可选参数。可以是一条或多条语句,当表达式为true时执行这些语句。如果语句序列中仅含有一条语句,则可以省略条件表达语句中的大括号。

【例5.2】创建IfPractice类,进行简单if条件语句的练习

class IfPractice{
    public static void main(String[] args){
        int a = 23 , b = 24 ;
        boolean boo = true ,aoo = false ;
        if(! false == boo || (5 == 6)){
            System.out.println("表达式的形式可以多样但其结果必须为boolean类型");
        }
        if(5 == 6);{
            System.out.println("如果if条件语句后即()后直接跟;则该条if简单语句语句无论是否成立都继续下面代码");
        }
        if(a < b){
            if( a < b){
                System.out.println("If语句可以像复合语句一样嵌套语句!");
            }
            System.out.println("简单if语句的标准形态;");
        }
        if(aoo) System.out.println("简单if语句序列中若只有一条语句则可以省略{}这时并无语法错误,并且if语句的作用范围也可覆盖,但不支持,为了增强阅读性");
            System.out.println("if语句若省略{},那么其作用范围只是紧随其后的一条语句,其他的语句会线性执行,不会受其表达式的影响!");
        if(boo){}//当简单if语句序列中没有内容时可以省略{},末尾加;,当然也可以保留,
        if(a < b && boo){
            System.out.println("简单if语句中的条件一定要是布尔表达式,也就是结果必须是布尔型,格式不限制");
        }
        /*if(3 = 3){
            System.out.println("我们一定要确定if语句条件表达式的数据类型,如上3是int型,结果也是int型,会爆出错误以外的类型");
        }*/
    }
}
菜鸟笔记 -- Chapter 5.3.2 条件语句

If语句注意点:

a,每一种格式都是单条语句。

b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式中。

c,条件表达式无论写成什么样子,只看最终的结构是否是true或者false;

D.if语句同复合语句一样可以嵌套语句

If语句流程运行图:

5.3.2.1.2 if...else语句

菜鸟笔记 -- Chapter 5.3.2 条件语句

If....else语句和三元运算符的区别

If ....else语句的执行行程图

对于if...else语句可以使用三元运算符对语句进行简化,如下面的代码if(a > 0) b = a ; else b = -a;

可以简化成: b = a>0?a:-a上面代码为求绝对值的语句,如果a > 0,就把a的值赋给b,否则将-a赋值给b。也就是“?”前面的表达式为真,则将问号和冒号之间的表达式的计算结果赋值给变量b,否则将冒号后面的计算结果赋值给b,使用三元运算符的好处是可以使代码简洁,并且有一个返回值。

3.4 if...else语句的执行过程图

在第一种简单if语句中条件不成立时if语句不能给出任何反馈,这是出现了第二种if语句当条件表达式的结果为true则执行语句1,否则执行语句2.

注意事项:

A.else没有条件表达式

B.else必须和if组合使用,else不能单独使用 会报错

C.一个if语句只能有一个else

else是可以省略的,当知道条件表达式成立时,可以省略else,这时就相当于1.1if语句

if语句和else量和使用时,if如果控制多行语句就一定要加{},否则出现B错误,这是情况为if语句+输出语句+else,B情况产生,如果if控制一行else控制一行时大括号能省,这是如果条件表达式为true则进行紧挨if语句的输出,反之输出else,if控制一行else控制多行时如果条件表达式为true则进行紧挨if语句的输出,else中输出除去紧挨else的语句 反之else中输出,所以Java中不管什么情况不要省略{},避免错误

【例5.3】创建IfElsePractice类,并针对if....else的一些特性进行验证

class IfElsePractice{
    public static void main(String[] args){
        /*else{
            System.out.println("else必须和if语句连用,不能单独使用,否则会错误,有'if',但是没有'else'");
        }*/
        if(5 > 6){
            System.out.println("我们可以看到简单if语句条件不成立时,if语句不能出现任何反馈,那么我们怎么知道是条件不成立还是程序错误呢,这时就出现了if...else语句");
        }
        if(5 > 6){
            System.out.println("为补充if语句而出现的if...else语句");
        }else/*(5 < 6)*/{
            System.out.println("if...else语句中else语句后不能有条件语句直接跟随{},如果跟随(),会发出错误,提示在()后加;");
        }/*else{
            System.out.println("一个if语句只能和一个else语句连用,否则会错误,有'if',但是没有'else'");
        }*/
        if(5 < 6){
            System.out.println("当if后面只控制一条语句时,可以省略{},它会直接输出,否则不支持,因为它只会输出紧跟他的一条");
        }else{
            System.out.println("当else后面只控制一条语句时,可以省略{},它会直接输出,否则不支持,因为它只会输出紧跟他的一条");
        }
    /*if(5 > 6)
        System.out.println("{}省略");  当if...else...语句中,if后边控制多条语句时,{}不可
        以省略,否则会报错“有if没有else”
        System.out.println("{}省略");
        else{
        System.out.println("{}省略时,");
        }*/
        //嵌套语句在if...else语句中的应用
        if(true){
            if(false){
                System.out.println("嵌套语句在if...else中的使用");
            }else{
                System.out.println("嵌套语句在if...else中的使用");
            }
        }else{
            System.out.println("嵌套语句在if...else中的使用");
        }
        /*三元运算符和if...else语句的区别,
        If--else语句与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式中,而if----else语句则没有这种限制,但是可以写在其他方法中,不能写在表达式中*/
        //求 a的绝对值和b的和
        int a = 7 , b = 3 , sum ;
        if(a > 0){
            System.out.println("您所求的两个数的和为:"+(a+b));
        }else
            System.out.println("您所求的数的绝对值为:"+(-a+b));
        sum = (a > 0 ? a : (-a))+b;    
        System.out.println("您所求的两个数的和为:"+sum);
    }
}
菜鸟笔记 -- Chapter 5.3.2 条件语句

面试题:问下面一段代码是否会正常输出?

if(5 > 6)

    System.out.println("{}省略”);

    System.out.println("{}省略");

else{

    System.out.println("{}省略时,");

  }

:不会,代码会出现错误,当代码判断条件语句不成立时,会自动跳过紧跟他的一条语句,这是它的作用范围,然后编译下一条代码,这时因为没有发现else,会将他认为是简单if语句,再往下执行时发现了else语句,这是编译会将其作为不合法代码跳出错误:’if’没有’else’”

5.3.2.1.3 if...else if语句

菜鸟笔记 -- Chapter 5.3.2 条件语句菜鸟笔记 -- Chapter 5.3.2 条件语句

注意事项: A.else if必须和if组合使用,else if语句末尾可以是一条单独的else语句

B.else不能有条件表达式

C.我们if语句第三种格式,任何一个条件表达式成立,if语句直接结束.

【例5.4】创建IfElseIfPractice类,进行对IfElseIf语句的特性进行一些验证

class IfElseIfPractice{
    public static void main(String[] args){
        if(false){
            System.out.println("1");
        }else if(false){
            System.out.println("2");
        }else if(true){//当发现if条件语句为true时,只执行这条语句,其他的就不再执行,
            System.out.println("3");//跳出这个if..else..if语句,执行其他程序
        }else if(true){
            System.out.println("4");
        }else{
            System.out.println("5");
        }
    }
}
菜鸟笔记 -- Chapter 5.3.2 条件语句

5.3.2.1.4 if条件语句练习

【例5.5学生考试成绩出来了请对其进行划分等级,要求90--100 A80--89 B70--79 C60--69 D60分以下 叫家长,谈人生

分析:我们初看到这道题目时,要注意这么几点

  • 考试成绩大于等于0小于等于100,所以我们要考虑输入错误的情况!
  • 由于成绩是一个变量,所以这里我们需要一个变量来代表这个成绩
  • 等级对于成绩来说是一个区间,并且这是一个条件语句,所以我们需要应用到比较运算符,和逻辑运算符。
  • 由于我们在这里需要比较很多区间,所以我们需要考虑用哪种语句,在这里很明显选择第三种if语句
class GradePractice{
    public static void main(String[] args){
        int score = 178 ;
        if(score <= 100 && score >= 90){
            System.out.println("您的成绩是:"+score+",相对应的成绩等级为:A等");
        }else if(score < 90 && score >= 80){
            System.out.println("您的成绩是:"+score+",相对应的成绩等级为:B等");
        }else if(score < 80 && score >= 70){
            System.out.println("您的成绩是:"+score+",相对应的成绩等级为:C等");
        }else if(score < 70 && score >= 60){
            System.out.println("您的成绩是:"+score+",相对应的成绩等级为:D等");
        }else if(score >=0 && score < 60){
            System.out.println("您的成绩是:"+score+",叫家长,谈人生!");
        }else{
            System.out.println("成绩输入错误请检查后重新输入!");
        }
    }
}
菜鸟笔记 -- Chapter 5.3.2 条件语句

【例5.6】给出月份,判断它所处的季节3-5春季6-8夏季9-11秋季12-2冬季

分析:我们首先来看需求

  • 首先我们需要定义一个变量来代表月份,我们用这个变量来在区间中比较;
  • 第二这个变量要符合我们的要求,即大于等于1,小于等于12,所以我们要考虑输入错误的情况;
  • 第三我们要选择合适的语句,在这里我们有很多种方法,下面一一介绍

方法一:一个个比较,使用简单if语句。

class SeasonPractice1{
    public static void main(String[] args){
        int month = 9 ;        //声明一个代表月份的变量
        if( month == 1){
            System.out.println("这个月份属于冬季!");
        }
        ......
        if( month == 3){
            System.out.println("这个月份属于春季!");
        }
        ......
        if( month == 6){
            System.out.println("这个月份属于夏季!");
        }
        ......
        if( month == 9){
            System.out.println("这个月份属于秋季!");
        }
        ......
         if( month == 12){
            System.out.println("这个月份属于冬季!");
        }else{
            System.out.println("您输入的数据储存在问题,请检查后重新输入!");
        }
    }
}
菜鸟笔记 -- Chapter 5.3.2 条件语句

方法2:使用逻辑运算符加上if语句。

class SeasonPractice2{
    public static void main(String[] args){
        int month = 2 ;
        if(month == 12 || month == 1 || month == 2){
            System.out.println("这个月份属于冬季!");
            //我们在这里使用if...else.if语句,需要明白语句的一个特性当有else.if语句为真时即跳出语句不再进行if.else语句,进行其他语句
        }else if(month == 3 || month == 4 || month == 5){
            System.out.println("这个月份属于冬季!");
        }else if(month == 6 || month == 7 || month == 8){
            System.out.println("这个月份属于冬季!");
        }else if(month == 9 || month == 10 || month == 11){
            System.out.println("这个月份属于冬季!");
        }else {
            System.out.println("对不起,您输入的数据存在问题,请检查后重新输入!");
        }
    }
}
菜鸟笔记 -- Chapter 5.3.2 条件语句

方法三:使用比较运算符,逻辑运算符和if语句;

class SeasonPractice3{
    public static void main(String[] args){
        int month = 17 ;
        if(month == 1 || month == 2 || month == 12){
            System.out.println("这个月份属于冬季!");
        }else if(month >= 3 && month <= 5){
            System.out.println("这个月份属于春季!");
        }else if(month >= 6 && month <= 8){
            System.out.println("这个月份属于夏季!");
        }else if(month >= 9 && month <= 11){
            System.out.println("这个月份属于秋季!");
        }else{
            System.out.print("对不起,您输入的数据错误,请检查后重新输入!");
        }
    }
}
菜鸟笔记 -- Chapter 5.3.2 条件语句

方法四:精简代码,从上面的三种方法我们可以看出代码的相同性有这么几点,(变量的判断比较,结果的输出,逻辑运算符的运用),我们将这相同的几点进行精简如下!

class SeasonLastPractice{
    public static void main(String[] args){
        int month = 7 ;
        String str ;
        if(month == 1 || month == 2 || month == 12){
            str = "这个月份属于冬季!";
        }else if(month >= 3 && month <= 5){
            str = "这个月份属于春季!";
        }else if(month >= 6 && month <= 8){
            str = "这个月份属于夏季!";
        }else if(month >= 9 && month <= 11){
            str = "这个月份属于秋季!";
        }else{
            str = "对不起,您输入的数据错误,请检查后重新输入!";
        }
        System.out.print(str);
    }
}

【例5.7】比较三个数的大小(if语句的嵌套使用)

class ComparePractice{
    public static void main(String[] args){
        /*三个数的比较我们要考虑这些情况,当甲和乙比较后,我们还要考虑已和丙的比较等,所以我们这里就用到了嵌套语句*/
        int a = 2 , b = 5 , c = 4 ;
        if(a > b){
            if(b > c){
                System.out.println("这三个数的大小为"+"a > b > c");
            }else if(a > c){
                System.out.println("这三个数的大小为"+"a > c > b");
            }else{
                System.out.println("这三个数的大小为"+"c > a > b");
            }
        }else{
            if(b > c){
                if(a > c){
                    System.out.println("这三个数的大小为"+"b > a > c");
                }else{
                    System.out.println("这三个数的大小为"+"b > c > a");
                }
            }
        }
    }
}
菜鸟笔记 -- Chapter 5.3.2 条件语句

【例5.8】求三个数中的最大值;

class MaxPractice{
    public static void main(String[] args){
        int a = 2 , b = 8 , c = 6 , max = 0;
        //如果只是求最大值,那么我们只用拿出大的那个值同最后一个值比较
        if(a > b){
            if(a > c){
                max = a ;
            }else{
                max = c ;
            }
        }else{
            if(b > c){
                max = b ;
            }else{
                max = c ;
            }
        }
        System.out.print("三个数的最大值为:"+max);
    }
}
菜鸟笔记 -- Chapter 5.3.2 条件语句

相关推荐