if 语句、switch 语句的叙述

选择结构

今天我们讲讲Java中的选择结构,顾名思义,程序在运行过程中会面临很多的选择问题。这时就需要合适的语句来执行它。通常解决选择问题时有两种语句比较合适,它们是if语句和switch语句。

if 语句

if控制语句共有3种不同的形式,分别是单分支结构、双分支结构和多分支结构。
一、if语句的语法格式如下:

//if单分支语句的语法格式
if(表达式){
	语句
}

if单分支语句执行步骤:
1.首先对表达式的结果进行判断
2.如果表达式的结果为真,则执行花括号里的语句
3.如果表达式的结果为假,则跳过花括号里的语句

二、if-else语句的语法格式如下:

//if-else语句的语法格式
if(表达式){
	语句1
}else{
	语句2
}

if-else语句执行步骤:
1.首先对表达式的结果进行判断
2.如果表达式的结果为真,则执行语句1
3.如果表达式的结果为假,则执行语句2

三、if-else if-else语句的语法结构如下:

//if-else if-else语句的语法格式
        if(表达式1){
            语句1
        }else if(表达式2){
            语句2
        }else{
            语句3
        }

if-else语句执行步骤:
1.首先对表达式1的结构进行判断
2.如果表达式1的结果为真,则执行语句1
3.如果表达式1的结果为假,则对表达式2的结果进行判断
4.如果表达式2的结果为真,则执行语句2
5.如果表达式2的结果为假,则执行语句3

if 语句嵌套使用

下面用一道例题详细介绍if 嵌套语句的使用。
每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。
设faHeight为其父身高,moHeight为其母身高,身高预测公式为:
男性成人时身高 = (faHeight + moHeight) * 0.54
女性成人时身高 = (faHeight * 0.923 + moHeight) / 2
此外,如果喜爱体育锻炼,那么可增加身高2%,如果有良好的卫生饮食习惯,那么可增加身高1.5%。
利用给定公式和身高预测方法对你的身高进行预测。
要求父母的身高、是否爱好体育锻炼等参数从键盘输入。
提示:字符串的比较使用 .equals方法,如 String a=”爱好”; a.equals(“爱好”)的值为true

public class Height {
    public static void main(String[] args) {
        double faHeight,moHeight,myHeight;
        String gender,bite,sports;
        System.out.println("请分别输入我的性别、父亲身高、母亲身高、有无良好的饮食习惯、有无坚持运动:");
        Scanner num=new Scanner(System.in);
        gender=num.next();
        faHeight=num.nextDouble();
        moHeight=num.nextDouble();

        bite=num.next();
        sports=num.next();
        if(gender.equals("男")){
            if(bite.equals("有")&&sports.equals("无")){
                myHeight=(faHeight+moHeight)*0.54*1.015;
                System.out.println("我的身高为:"+ myHeight);
            }else if (bite.equals("无")&&sports.equals("有")){
                myHeight=(faHeight+moHeight)*0.54*1.02;
                System.out.println("我的身高为:"+ myHeight);
            }else if(bite.equals("有")&&sports.equals("有")){
                myHeight=(faHeight+moHeight)*0.54*1.035;
                System.out.println("我的身高为:"+ myHeight);
            }else {
                myHeight=(faHeight+moHeight)*0.54;
                System.out.println("我的身高为:"+ myHeight);
            }
        }else {
            if(bite.equals("有")&&sports.equals("无")){
                myHeight=(faHeight*0.39+moHeight)/2*1.015;
                System.out.println("我的身高为:"+ myHeight);
            }else if (bite.equals("无")&&sports.equals("有")){
                myHeight=(faHeight*0.39+moHeight)/2*1.02;
                System.out.println("我的身高为:"+ myHeight);
            }else if(bite.equals("有")&&sports.equals("有")){
                myHeight=(faHeight*0.39+moHeight)/2*1.035;
                System.out.println("我的身高为:"+ myHeight);
            }else {
                myHeight=(faHeight*0.39+moHeight)/2;
                System.out.println("我的身高为:"+ myHeight);
            }
        }
    }
}

题目解析:
根据题目所示,这里可以很好的使用if 嵌套语句。首先用一个if-else 语句判断性别,然后在if 语句里面再使用if-else if-else 语句判断有无良好的饮食习惯、有无坚持运动,运行结果如下:
在这里插入图片描述

注意:

(1)if 语句后面的括号内的条件表达式的值必须为布尔值,结果为true或者false;
(2)花括号里只有一条语句时可以省略花括号,但为了程序具有更高的可读性,一般不省略花括号;
(3)else 子句不能单独使用,它必须是if 语句的一部分;
(4)不论多分支if 语句中有多少个条件表达式,只会执行符合条件的一个,如果没有符合条件的,则执行else 子句中的语句;

if 语句练习

现在输入一个成绩,判断该成绩为优秀、良好、及格还是不及格。

// 多分支if语句的使用
public class Demo4 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入成绩:");
        int score=sc.nextInt();
        if (score>=90){
            System.out.println("优秀");
        }else if (score>=80&&score<90) {
            System.out.println("良好");
        }else if (score>=60&&score<80){
            System.out.println("及格");
        }else{
            System.out.println("不及格");
        }
    }
}

其运行结果如下:
在这里插入图片描述

switch 语句

除 if 语句以外,Java还提供了switch 语句,用于实现多分支选择结构。其语法格式如下:

//switch语句的语法格式
switch(表达式){
            case 常量1:
                语句;
                break;
            case 常量2:
                语句;
                break;
            case 常量3:
                语句;
                break;
                ...
            default:
                 语句;
                 break;
        }

switch语句的执行步骤如下:
1.计算switch语句后表达式的值
2.将表达式的值从上到下依次与case后的常量值进行比较
3.如果相等就执行该常量后面的代码块,遇到break语句就结束
4.如果与任何一个case后的常量值都不匹配,就执行default中的代码块

switch语句应用

输入出生年份末尾两位数,判断年龄。仅仅以部分年份以作演示。

// 以出生年份末尾两位作为判断,95,96,97,98
public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入出生年份后两位:");
        byte year=sc.nextByte();
        switch (year){
            case 95:
                System.out.println("25岁");
                break;
            case 96:
                System.out.println("24岁");
                break;
            case 97:
                System.out.println("23岁");
                break;
            case 98:
                System.out.println("22岁");
                break;
                default:
                    System.out.println("other");
                    break;
        }
    }

输入出生年份末尾两位数year,将其依次与case 后面常量比较,例如输入97,程序比较后执行97后面的语句输出,然后遇到break结束。
运行结果如下:
在这里插入图片描述

注意

(1)如果case 后没有break 语句,程序将继续向下执行,直到遇到break 语句结束
(2)switch 后面的表达式是一个确切的值,用于跟case 后的常量作比较
(3)可以没有default 语句,且default 语句一般放在末尾

if 语句和switch 语句的区别

if 语句适用于区间范围判断,而switch 语句适用于等值选择判断。在某些情况下if 语句可以用switch 语句来完成,同样switch 语句也可以用if 语句来完成。在编码过程根据实际情况定选用if 语句还是switch语句,选择不同程序的运行过程、速度也会有所不同。

以供参考,不足之处还请指教!!!
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值