分支结构(if/else,switch选择判断)

Posted zitian246

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分支结构(if/else,switch选择判断)相关的知识,希望对你有一定的参考价值。

分支结构

Note:switch中支持的类型为byte,short,int,char,String(JDK7+),枚举共6种,不支持浮点型

1.if结构

if:如果

格式:

if(布尔表达式){

//条件成立逻辑代码块

}

import java.util.Scanner;
public class Test5{
    public static void main(String [] args){
        // 赵四两门成绩  java成绩  音乐成绩
        // 如果java成绩大于85 并且 音乐成绩 大于75  奖励苹果8袋
        // 或者
        // 如果java成绩等于100 并且 音乐成绩 大于 65 奖励苹果8袋
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你的java成绩");
        int javaScore = input.nextInt();
        System.out.println("请输入你的音乐成绩");
        int musicScore = input.nextInt();
        
        if((javaScore > 85 && musicScore > 75) || (javaScore == 100 && musicScore > 65)){
            System.out.println("奖励苹果8袋");
        }   
        // 在程序结束之前 判断当前是否获得奖励
        System.out.println("程序结束");
    }
}

2.if - else

else : 否则

要求:else不能单独出现,必须结合if或者其他的选择结构

格式:

if(布尔表达式){

//条件成立执行的逻辑代码

}else{

//以上条件不成立的其他任何情况都会执行的代码

}

package com.qfedu.test1;
?
import java.util.Scanner;
?
public class Test2 {
    public static void main(String[] args) {
        // if -else
        // else:否则 不能单独出现 必须结合 if 或者其他的选择结构
        // 单行注释快捷键  选中需要被注释的代码  ctrl + / 取消注释 也是一样的操作
        // ctrl + d删除选中内容
//      if(布尔类型的表达式) {
//          
//      }else {
//          
//      }       
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你的java成绩");
        int javaScore = input.nextInt();
        System.out.println("请输入你的音乐成绩");
        int musicScore = input.nextInt();
            
        if((javaScore == 100 && musicScore > 65) || (javaScore >= 85 && musicScore >= 75)) {
            System.out.println("奖励苹果8袋");
        }else {
            System.out.println("继续努力");
        }
    }
}

3.多重if

适用场景:多重if用于处理某个值处于某个连续的区间的情况

else - if不能单独出现,必须结合if

多重if中的else - if没有上限,写多少都可以

多重if中的else可写可不写,根据需求是否书写

package com.qfedu.test1;
?
import java.util.Scanner;
?
public class Test4 {
    public static void main(String[] args) {
        // 根据成绩评定等级
        // >= 90 优秀
        // >= 80 良好
        // >= 70 中等
        // >= 60 及格
        // < 60 差
        // 以上需求我们可以使用多重if来实现
        // 多重if通常用于处理某个值处于某个连续的区间的情况 
        // 多重if编写条件必须是有顺序的  升序 或者  降序
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你的成绩");
        int score = input.nextInt();
        
        if(score >= 90) {
            System.out.println("优秀");
        }else if(score >= 80) {
            System.out.println("良好");
        }else if(score >= 70) {
            System.out.println("中等");
        }else if(score >= 60) {
            System.out.println("及格");
        }else {
            System.out.println("继续努力");
        }   
    }
}

4.嵌套if

概念:if选择结构中继续嵌套if选择结构,if、if - else、多重if之间可以互相嵌套,没有上限

适用场景:通常用于处理某些关联关系的条件情况,例如先符合条件A,才有机会符合条件B

package com.qfedu.test1;
?
import java.util.Scanner;
?
public class Test6 {
    public static void main(String[] args) {
        // 举行百米跑步比赛 跑步时间小于 10 秒的话 进入决赛 
        // 根据性别分别进入 男子组 或者 女子组
        // 需求改进
        // 为了公平比赛 男生 要求10秒可以进入决赛 女生12秒可以进入决赛
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你的跑步时间");
        double time = input.nextDouble();
        System.out.println("请输入你的性别");
        String sex = input.next();
        //      if(time < 10) {
        //          // 男生
        //          if(sex.equals("男")) {
        //              System.out.println("恭喜你进入男子组");
        //          }
        //      }else if(time < 12) {
        //          if(sex.equals("女")) {
        //              System.out.println("恭喜你进入女子组");
        //          }
        //      }
?
//      if((time < 10 && sex.equals("男"))) {
//          System.out.println("恭喜进入男子组");
//          
//      } else if (time < 12 && sex.equals("女")) {
//          System.out.println("恭喜进入女子组");
//      }
                
        if(sex.equals("男")) {
            if(time < 10) {
                System.out.println("恭喜进入男子组");
            }
        }else if(sex.equals("女")){
            if(time < 12) {
                // alt + 方向键 上下键
                System.out.println("恭喜进入女子组");
            }
        }
    }
}

5.switch结构

switch : 开关

case:情况

break:打破、折断

default:默认

格式:

switch(变量|表达式){

case 值1:

逻辑代码1;

case 值2:

逻辑代码2;

case 值n:

逻辑代码n;

default:

未满足时的逻辑代码; }

使用场景:switch通常用于处理等值的情况

类型要求:支持的数据类型:

byte,short,int,char,String(JDK7+),枚举

package com.qfedu.test1;
?
import java.util.Scanner;
?
public class Test7 {
    public static void main(String[] args) {
        // switch 
        // 支持的数据类型 byte short int char String(JDK7+) 枚举
        // 需求:学校举行尬舞比赛 
        // 一等奖  夏令营1天
        // 二等奖  夏令营1天
        // 三等奖  夏令营1天
        // 四等奖 夏令营1天
?
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你的名次");
        int num = input.nextInt();
        //      if(num == 1) {
        //          System.out.println("夏令营1天");
        //      }else if (num == 2) {
        //          System.out.println("优盘1个");
        //      }else if(num == 3) {
        //          System.out.println("笔记本1个");
        //      }else if(num == 4){
        //          System.out.println("口头表扬一次");
        //      }
?
//      switch(num) {
//      case 1:
//          System.out.println("夏令营1天");
//          break;
//      case 2:
//          System.out.println("优盘1个");
//          break;
//      case 3:
//          System.out.println("笔记本1个");
//          break;
//      case 4:
//          System.out.println("口头表扬一次");
//          break;
//      }
//      
        switch(num) {
        case 1:
        case 2:
        case 3:
        case 4:
            System.out.println("夏令营1天");
            // break也不是必须存在的  根据需求是否书写 不书写的效果将一直执行到书写break的case停止
            // case块书写上break  表示执行 完当前case块代码跳出当前case块
            break;
            // default不是必须存在的 根据需求
            // 位置也不是固定的 但是要求必须写在最后
            // default也要加上break
        default:
            System.out.println("继续努力");
            break;
        }
    }
}

6.局部变量

概念:声明在函数内部的变量

要求:

1.必须先赋值才能使用

2.定义位置:定义在方法体内部

3.多个变量,在重合的作用范围内,不能出现重名(命名冲突)

4.作用范围:在定义的代码块以内可以访问

5.存放的位置:局部变量存在栈中

6.生命周期:随着方法的入栈(压栈)而生效,随着方法的出栈(弹栈)而死亡

package com.qfedu.test1;
// int a = 20; 不能定义在类以外
public class Test9 {
    // int s = 20; 在这里定义可以编译通过 但是不是局部变量(全局变量)
    public static void main(String[] args) {
        int a;
        int b = 10;
        System.out.println(b);
        // System.out.println(a); 局部变量 必须先赋值 才能使用
        if(b > 5) {
            int c = 20;
            System.out.println(c);
            // System.out.println(d); 不能访问d 因为超出范围 并且 d在后续的代码中定义  不能提前访问
            if(b > 6) {
                int d = 20;
                System.out.println(c);
            }
//          System.out.println(d); // 超出范围
        }
        
//      System.out.println(c); 超出范围
    }
}

 

 

 

以上是关于分支结构(if/else,switch选择判断)的主要内容,如果未能解决你的问题,请参考以下文章

Java 分支结构 - if...else/switch

Java 分支结构 - if...else/switch

Java 分支结构 - if...else/switch

java的选择结构

javaScript之分支判断与内置对象

if+switch+for应用以及假设法的使用