第六章、条件语句

第六章、条件语句

摘要

这是第六章,条件循环语句,也是所有语言当中必须要掌握的一些基本的循环算法,话不多说,直接上干货,如果你觉得可以请直接点赞加关注。越多更的越快!

提纲

  • 6.1 多个if
  • 6.2 多重if
  • 6.3 switch选择结构
    • 6.3.1 语法结构
    • 6.3.2 例
    • 6.3.3 注意事项(常见错误)
      • 6.3.3.1 不写break的情况
      • 6.3.3.2 case的常量问题
      • 6.3.3.3 default的顺序问题
      • 6.3.3.4 switch的条件问题
      • 6.3.3.5 枚举类型举例(
  • 6.4 多重if与switch选择结构的比较
  • 6.5 嵌套if
  • 6.6 判断键盘输入字符的合法性
  • 6.7 作业

6.1 多个if

1.语法结构:多个if,执行的时候,三个条件都会进行判断,有几个条件满足则会执行几个代码块
if(条件){
//代码块1
}
if (条件2) {
//代码块2
}
if (条件3) {
//代码块3
}
2. 例:定义三个变量:String name = “张三”;String sex = “女”;int age = 100;分别判断并输出。

String name = “张三”;
String sex = “女”;
int age = 100;
if (“张三”.equals(name)) {
System.out.println(“姓名是:”+name+",好名字!");
}
if (“女”.equals(sex)) {
System.out.println(“性别是:”+sex+",美女好啊!");
}
if (age == 100) {
System.out.println(“年龄是:”+age+",就是年纪有点大!");
}
//输出结果是三句话都会输出

  1. 注意事项:每个if都会执行一遍

6.2 多重if

  1. 语法结构:

    if (条件1) {
    //代码块1
    } else if (条件2) {
    //代码块2
    } else if(条件3) {
    //代码块3
    } else {
    //代码块4
    }

  2. 举例:对学员的结业考试成绩评测:成绩>=90 :优秀,成绩>=80 :良好 ,成绩>=60 :中等,成绩<60:差。

    int score = 70; //考试成绩
    if ( score >= 90 ) {
    System.out.println(“优秀”);
    } else if (score >= 80 ) {
    System.out.println(“良好”);
    } else if (score >= 60 ) {
    System.out.println(“中等”);
    } else {
    System.out.println(“差”);
    }
    //结果为中等

  3. 注意事项:

    • 有if不一定要有else,但是有else必须要有if,else不能单独存在
    • 如果有多个if,只有一个else时,这个else属于最近的那个if,即就近原则
    • 多重if,只会执行一个if条件的代码块。即如果执行到某个if条件满足之后,后面if就不会再执行

    6.3 switch选择结构

  • 6.3.1 语法结构:

    switch (表达式) {//这里的表达式是一个数值或者char类型字符,在JDK1.7(包括1.7)后可以使用字符串

      case 常量 1://如果等于常量1
    	语句;
    	break;//执行完之后跳出switch
    
      case 常量 2://如果等于常量2
    	语句;
    	break;
    …
    default://如果没有找到匹配的值
    	语句;
    }
    
  • 6.3.2 例:韩嫣参加计算机编程大赛。如果获得第一名,将参加麻省理工大学组织的1个月夏令营;如果获得第二名,将奖励惠普笔记本电脑一部;如果获得第三名,将奖励移动硬盘一个;否则,不给任何奖励。(该问题属于等值判断)

    int mingCi = 1;
    switch (mingCi) {
    case 1:
    System.out.println(“参加麻省理工大学组织的1个月夏令营”);
    break;
    case 2:
    System.out.println(“奖励惠普笔记本电脑一部”);
    break;
    case 3:
    System.out.println(“奖励移动硬盘一个”);
    break;
    default:
    System.out.println("没有任何奖励 ");
    }
    //执行结果:参加麻省理工大学组织的1个月夏令营

  • 6.3.3 注意事项(常见错误)

    • 6.3.3.1 例1:不写break的情况。

      int mingCi = 2;
      switch (mingCi){
      case 1:
      System.out.println(“参加麻省理工大学组织的1个月夏令营”);
      case 2:
      System.out.println(“奖励惠普笔记本电脑一部”);
      case 3:
      System.out.println(“奖励移动硬盘一个”);
      default:
      System.out.println("没有任何奖励 ");
      }
      //执行结果
      奖励惠普笔记本电脑一部
      奖励移动硬盘一个
      没有任何奖励
      结论:每个case后不要忘记写break,否则会代码会继续往后执行所有的case代码,并且不会再进行判断(之前的代码会进行判断)。

    • 6.3.3.2 例2:case的常量问题。

      int mingCi = 1;
      switch (mingCi){
      case 1:
      System.out.println(“参加麻省理工大学组织的1个月夏令营”);
      case 2://代码错误,会报红线错误
      System.out.println(“奖励惠普笔记本电脑一部”);
      case 2:
      System.out.println(“奖励移动硬盘一个”);
      default:
      System.out.println("没有任何奖励 ");
      }
      结论:case后面的常量必须各不相同

    • 6.3.3.3 例3:default的顺序问题。

      int mingCi = 4;
      switch (mingCi){
      default:
      System.out.println("没有任何奖励 ");break;
      case 1:
      System.out.println(“参加麻省理工大学组织的1个月夏令营”);break;
      case 2:
      System.out.println(“奖励惠普笔记本电脑一部”);break;
      case 3:
      System.out.println(“奖励移动硬盘一个”);break;
      }
      //执行结果
      没有任何奖励
      结论:default位置没有顺序,可以省略,写了之后必须写上break。

    • 6.3.3.4 例4:switch的条件问题。

      String day = “星期一”;
      switch (day){//代码错误
      case “星期一”:
      System.out.println("星期一:青菜 ");
      break;
      case “星期二”:
      System.out.println("星期二:鱼 ");
      break;
      ……
      default:
      }
      结论:switch(条件)中的条件必须是整型或字符型或枚举类型的值,不能为字符串(JDK1.7之后可以(包括1.7))

    • 6.3.3.5 枚举类型举例(JDK1.5之后):

      //创建枚举类型
      public enum Color{
      RED, GREEN, BLANK, YELLOW;//大写
      }
      public static void main(String[] args) {
      Color color = AAA.Color.RED;
      switch (color){
      default:
      System.out.println(“空格”);break;
      case RED:
      System.out.println(“红色”);break;
      case GREEN:
      System.out.println(“绿色”);break;
      case YELLOW:
      System.out.println(“黄色”);break;
      }
      }

      6.4 多重if与switch选择结构的比较

  1. 相同点:都是用来处理多分支条件的结构。
  2. 不同点:
    • switch选择结构:只能处理等值条件判断的情况,而且条件必须是整型变量或字符型变量。
    • 多重if选择结构:没有switch选择结构的限制,特别适合某个变量处于某个连续区间时的情况。
  3. 执行效率问题:5个选项(包括default)的情况下,switch和if/else if相同。低于5个选项if快,高于5给选项switch快!
  4. 使用条件:
    • switch:常量表达式,如整形,字符型,静态字符串型。
    • 多重if:如果比较的是一个区间,比如成绩等,就不能用switch解决。

6.5 嵌套if

  1. 语法结构:

    if(条件1) {
    //内层选择结构
    if(条件2) {
    代码块1
    } else {
    代码块2
    }
    } else {
    代码块3
    }

  2. 例:与一个女生搭讪。

    String sex = “女”;
    int age = 18;
    if (sex.equals(“女”)) {
    if (age <= 18) {
    System.out.println(“呵呵,我喜欢!”);
    } else {
    System.out.println(“滚一边玩去!”);
    }
    } else {
    System.out.println(“淘汰!”);
    }


6.6 判断键盘输入字符的合法性

  1. 菜单跳转的程序,需要输入数字编号,如果用户错误地输入了一个不允许的字符,例如“s”,程序会怎样呢?

    Scanner input = new Scanner(System.in);
    if (input.hasNextInt()) {
    int num = input.nextInt();
    switch (num) {
    case 1:
    //显示系统主菜单;break;
    case 2:
    System.out.println(“谢谢您的使用!”);break;
    default:
    System.out.println(“输入错误。”);break;
    }
    } else {
    System.out.println(“请输入正确的数字!”);
    }
    结论:hasNextInt()方法判断输入的字符是否为int类型的数据。同理还有input.hasNextDouble(),input.hasNextLong()。


6.7 作业

  1. 输入赵本山的考试成绩,显示所获奖励,成绩==100分,爸爸给他买辆车,成绩>=90分,妈妈给他买MP4,90分>成绩>=60分,妈妈给他买本参考书,成绩<60分,什么都不买。
  2. 我想买车,买什么车决定于我在银行有多少存款,如果我的存款超过500万,我就买凯迪拉克,否则,如果我的存款超过100万,我就买帕萨特,否则,如果我的存款超过50万,我就买依兰特,否则,如果我的存款超过10万,我就买奥托,否则,我买捷安特。
  3. 一个运输公司规定,每公里运费为20元。如果运输公里数小于100公里的不打折,大于等于100公里并小于500公里的打9折,大于等于500公里的打8折。现要求输入一个公里数,计算费用。
  4. 张三为他的手机设定了自动拨号,按1:拨爸爸的号,按2:拨妈妈的号,按3:拨爷爷的号,按4:拨奶奶的号。(switch)
  5. 猴子去买桃,如果买3个以下,老板就不送桃,如果买3个到5个就再送一个桃,如果买5个以上就送2个桃,现在要求输入猴子的买桃数,最后输出到底买到了几个桃。
  6. 输入一个数字,如果这个数字是1,那么输出星期一,如果这个数字是2,那么就输出星期二,如果这个数字是3,那么就输出星期三。。。。。。如果是其他就输出输入错误!(switch)。
  7. 定义一个char型的变量,如果值是’a’,输出“拨打的是移动”;如果值是’b’,输出“拨打的是联通”;如果值是’c’,输出“拨打的是网通”;其他的是“拨打错误”。
  8. 输入一个整数,如果这个整数等于0输出“生成了一只白猪”,如果输入的整数等于1输出“生成了一只黑猪”,如果输入的是2输出“生成了一只红猪”,如果是其它的数就输出“生成了一只变形猪”。
  9. 输入一个整数,如果这个整数是小于0数输出小于0,如果大于等于0并且小于等于100就输出“整数>=0 and 整数<=100”。如果这个整数大于100就输出“整数>100”。
  10. 到商场去购买商品,首先购买了一台电视机,请输入电视机的价格。然后又购买了一个冰箱,请输入冰箱的价格。最后到前台交钱。如果总价格小于100元就不打折,如果总价格大于等于100–1000元就打9折,如果总价格大于等于1000元就打8折,如果总价格大于5000元就打7折。输出最后需要多少元。
  11. 输入你的性别(1代表男,2代表女,3代表中性,其他代表不是人类)。
  12. 写一个程序,根据下面给出的约束条件来计算学员的等级。输入一个整数表示学生的成绩,放在marks变量了 ,根据下面的等级分配,输出学生的等级,if marks>75-----A级,if 60 <=marks <= 75-------B级,if 45 <= marks <60 -------C级,if 35<=marks < 45-------D级,if marks <35 ------E级。
  13. 输入一个整数,如果等于0,把这个整数加2的结果输出;如果等于1,把这个整数加3的结果输出;如果等于2,把这个整数加4的结果输出;如果是其他的数就直接输出这个整数。
  14. 现在有一个银行保险柜,有两道密码。想拿到里面的钱必须两次输入的密码都要正确。如果第一道密码都不正确,那直接把你拦在外面;如果第一道密码输入正确,才能有权输入第二道密码。只有当第二道密码也输入正确,才能拿到钱!(两道密码自己设)(嵌套if)
  15. 找女朋友,先问“你是女的吗?”当她是的时候,再问“你有多大啊?”。
  16. 输入三个整数,如果这三个整数都相等,那么输出“这三个数相等”。否则再判断这三个数之和是否大于1000,如果大于1000输出“这三个数之和大于1000”否则输出“这三个数之和不大于1000”。
  17. 普通顾客购物满100元打9折;会员购物打8折;会员购物满200元打7.5折。实现思路:1、外层判断是否是会员2、内层判断是否达到相应打折要求。
  18. 输入两个小数,先将他们的整数部分拿出求和,如果大于10,就拿出他们的小数部分的求和,如果他们小数部分的和大于1.0,就输出“这两个数的小数部分大于1.0”,否则就说“这两个数的小数部分小于1.0”。如果他们整数部分求和不大于10,就拿出他们的小数部分的求差,如果他们小数部分的差大于0.0就输出“这两个数的小数部分的差大于0.0”,否则就说“这两个数的小数部分的差小于0.0”。
    19.使用switch实现分级菜单(效果如下):
    请输入消费金额:
    250
    是否参加优惠换购活动:
    1:满50,加2元换购百事可乐饮料一瓶
    2:满100,加3元换购500ml可乐一瓶
    3:满100,加10元换购5公斤面粉
    4:满200,加10元换购1个苏泊尔炒菜锅
    5:满200,加20元换购欧莱雅爽肤水一瓶
    0:不换购
    请选择:
    2
    本次消费总金额:253.0
    成功换购:500ml可乐一瓶
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值