欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java基础 -- 第03章:选择结构[云图智联]

程序员文章站 2022-04-28 08:37:32
...

免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/

1. if选择结构

1.1 基本if选择结构

1.1.1   生活中,我们经常需要先作出判断再来决定是否作某件事情。比如:如果我的存款超过1万元我就出去旅游、如果今天的任务完成了晚上就不需要加班等等。在程序中,对于这种“需要先判断条件,条件满足时才能执行”的需求,就要用到if选择结构来解决。
1.1.2   基本语法:

if(布尔表达式){  
    //表达式结果为true时执行的代码块  
}else{  
    //表达式结果为false时执行的代码块
}

1.1.3   实例:

public static void main(String args[]){
  int x = 10;
  if( x < 20 ){   //此表达式的运算结果为true
     System.out.print("这是 if 语句");   //所以执行此行代码
  }else{
     System.out.print("这是 else 语句"); //不执行此行代码
  }
}

1.1.4   逻辑运算符:
  1.1.4.1   &&:与、并且:所有条件同时为真,结果为真;若有一个为假,结果为假。比如:

int m=10;
boolean bool=(m>0 && m<100);  //此时bool值为true,当m值为200时,bool值为false  

  1.1.4.2   ||:或、或者:所有条件有一个为真,结果就为真;同时为假,结果为假。比如:

int x=95,y=80;
boolean bool=(x>=95 || y>=95); //此时bool值为true,当X值为94时,bool值为false  

  1.1.4.3   !:非、取反:条件为真,结果为假;条件为假,结果为真。比如:

int n=0;
boolean bool=!(n>0);  //此时bool值为true,当n值为1时,bool值为false  

1.1.5   注意:当if()中的条件判断语句比较复杂时,可以用()进行分层次、分级别的包裹处理。

1.2 多重if选择结构

1.2.1   一般用来解决需要判断的条件是连续的区间时;
1.2.2   基本语法及流程示意图:

if(布尔表达式1){  
    //布尔表达式1结果为true时执行的代码块1  
}else if(布尔表达式2){  
    //布尔表达式2结果为true时时执行的代码块2
}else if(布尔表达式3){  
    //布尔表达式3结果为true时时执行的代码块3
}else{
    //所有布尔表达式结果都为false时执行的代码块4
}

1.2.3   实例:

public static void main(String args[]){
  int score = 70;

  if( score >= 90 ){            //当score大于等于90时
     System.out.print("Very Good!");
  }else if( score >= 80 ){      //当score小于90,并且大于等于80时
     System.out.print("不错!");
  }else if( score >= 70 ){      //当score小于80,并且大于等于70时
     System.out.print("还行!");   //执行此行代码
  }else{                        //当score小于70时
     System.out.print("要加油哦!");
  }
}

1.2.4   注意:
  1.2.4.1   else是“否则”的意思,就是说通过这个“else”,已经将与它对应的if()中的布尔结果隐式的“取反”了。
  1.2.4.2   else-if块可以有也可以没有,具体请根据需要而定;
  1.2.4.3   else块可以没有,最多只能一个,且必须放在else-if块之后。
  1.2.4.4   如果多个else-if块是连续的关系,则要按照从大到小,或从小到大的顺序依次排列,不能随意。

1.3 嵌套if选择结构

1.3.1   我们知道,在乘坐火车时:当旅客购买了火车票后才能进入安检区,当通过了安检后才能进入候车区,到了进站时间时才能进入站台...同理,在程序中也有很多需要我们多级、层层去判断的情况,这就需要用到嵌套if结构来解决。
1.3.2   基本语法:

if(布尔表达式1){
    if(布尔表达式2){  
        //布尔表达式1和2都为true时执行的代码块
    }else{
        //布尔表达式1为true但布尔表达式2为false时执行的代码块
    }
}else {
    //布尔表达式1为false时执行的代码块  
}

Java基础 -- 第03章:选择结构[云图智联]

1.3.3   实例:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    System.out.println("您购买了火车票吗?");
    String answer1=input.next();    
    if(answer1.equals("yes")) {
        System.out.println("请进入安检区...");
        System.out.println("安检合格了吗?");
        String answer2=input.next();
        if (answer2.equals("yes")) {
            System.out.println("请进入候车区...");
            System.out.println("到进站时间了吗?");
            String answer3=input.next();
            if (answer3.equals("yes")) {
                System.out.println("请进入站台...");                 
            } else {
                System.out.println("请您耐心等候...");
            }
        } else {
            System.out.println("安检不通过,不能进入候车区!");
        }
    }else {
        System.out.println("请您先去购票!");
    }
}

1.3.4   注意:
  1.3.4.1   互相匹配的一对if和else块应该左对齐;
  1.3.4.2   内层的if结构应该相对于外层的if结构有一定的缩进,以显示层次、包含关系;
  1.3.4.3   if-esle结构之间可以根据需要进行多级嵌套,注意逻辑和格式的正确;
  1.3.4.4   在动手编码之前,尤其是对一个问题无从下手时,可以先画出流程图来帮助理清解决思路。

1.4 习题:请通过编程实现:从控制台输入3个整数,然后将这3个数按照从小到大的顺序重新排序后再次输出。

1.4.1   思路:(1)先将输入的3个数分别存入3个变量中;(2)如何排序?这就好比3个人按身高排队,两两比较,个高的往后站;同理,这3个数字也需要两两比较,如果前面的大于后面的,就把它们的值互换即可。另外,为了保证比较的全面,3个数字一共需要比较3次。
1.4.2   部分参考代码及效果图:

    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("请输入第一个数字:");
    int first=input.nextInt();
    System.out.println("请输入第二个数字:");
    int second=input.nextInt();
    System.out.println("请输入第三个数字:");
    int third=input.nextInt();
    System.out.println("排序前:"+first+"\t"+second+"\t"+third);
    if(first>second) {  //如果第一个大于第二个
        //交换
        int empty;
        empty=first;
        first=second;
        second=empty;
    }
    if(second>third) {  //如果第二个大于第三个
        //交换
        int empty;
        empty=second;
        second=third;
        third=empty;
    }
    if(first>second) {  //如果第一个大于第二个
        //交换
        int empty;
        empty=first;
        first=second;
        second=empty;
    }
    System.out.println("排序后:"+first+"\t"+second+"\t"+third);    
}

Java基础 -- 第03章:选择结构[云图智联]

2. switch选择结构

2.1 什么是switch选择结构

2.1.1   switch选择结构一般用于等值、独立条件的判断,比如判断一个人的国籍、电风扇的调速档位等等;
2.1.2   基本语法:

switch(表达式){
    case 常量1:
        //代码块1;
        break;
    case 常量2:
        //代码块2;
        break;
    ......
    defalut:
        //代码块n;
        break;
}

2.1.3   说明:
  2.1.3.1   执行过程:先计算并获取switch后的()中的表达式或变量的值,然后将这个值逐一与每个case后的常量进行比对,当两者相等时就执行这个case块中的代码;当遇到break时,就跳出整个switch结构。如果这个值与所有的case后的常量都不相等,则执行defalut块中的代码。
  2.1.3.2   switch的原义为“开关/转换器”,其后的()里的值可以是整型变量(表达式),可以是字符变量(表达式);
  2.1.3.3   case的原义为“情况/情形”,其后必须是一个整型或字符型的常量。case块可以有任意个,顺序可以改变,但每个case后的值必须各不相同、互斥。
  2.1.3.4   defalut的原义为“默认”,当所有的case块都不满足时,就执行default块中的代码。default块与case块的顺序没有要求,但通常放在最后,且可以省略。
  2.1.3.5   break的原义为“打断/终止”,即跳出当前结构。且break语句是可以省略的,但省略后,它后面的case就不再进行判断而是直接执行,直到再次遇到break才会跳出。有时会利用这一原理让多个case块执行同一个操作。

2.2   实例1:

2.2.1   需求说明:某超市举行幸运抽奖活动,一等奖可获得电动车一辆,二等奖可获得洗衣机一台,三等奖可获得电饭锅一台,其它都为幸运奖,可获得洗衣粉一袋。
2.2.2   分析:可获得什么奖品需要先判断获得了几等奖,并且各个名次之间没有连续关系,都是独立的数据,所以我们选用switch结构来解决这个问题; 2.2.3   参考代码:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("请输入您的获奖名次:");
    if (input.hasNextInt()) {  //用户输入的是一个数字
        int mingCi=input.nextInt();
        switch (mingCi) {       
        case 1:  //如果名次为1
            System.out.println("恭喜你,获得电动车一辆!");
            break;
        case 2: //如果名次为2
            System.out.println("恭喜你,获得洗衣机一台!");
            break;
        case 3:  //如果名次为3
            System.out.println("恭喜你,获得电饭锅一台!");
            break;
        default:   //如果名次不是1  2  3,即默认的情况
            System.out.println("恭喜你,获得幸运奖,洗衣粉一袋!");
            break;
        }   
    } else {  //用户输入的不是数字
        System.out.println("您输入的不是数字,请重新输入!");
    }           
}  

2.3   实例2:

2.3.1   需求说明:为云小图制定学习计划,星期一、三、五学习编程,星期二、四、六学习英语,星期日休息。 2.3.2   分析:决定哪天应该干什么需要先判断今天是周几,并且没有连续关系,所以我们选用switch结构来解决这个问题;并且“星期一、三、五”这三种case执行的操作是一样的,“星期二、四、六”这三种case执行的操作是一样的,所以,我们只需酌情省略几个break,就可以让多个case块执行相同的操作; 2.3.3   参考代码:

public static void main(String[] args) {
    System.out.println("今天是周几?");
    Scanner input = new Scanner(System.in);

    String week = input.next();
    switch (week) {
    case "一":
    case "三":
    case "五": // 如果是1/3/5,执行同一个操作
        System.out.println("学习编程");
        break;
    case "二":
    case "四":
    case "六": // 如果是2/4/6,执行同一个操作
        System.out.println("学习英语");
        break;
    case "日":
        System.out.println("休息");
        break;
    }
}

2.4 switch结构和if结构的使用场景

2.4.1   switch结构的条件只能是等值的判断,并且只能是整型或字符型的等值判断。
2.4.1   多重if结构既可以用来进行连续区间的判断,也可以用于等值条件的判断。

2.5 习题

2.5.1   需求说明:编写一个程序,为一个给定的年份找出其对应的中国生肖。生肖每12年一个周期,每年用一个动物代表:rat、ox、tiger、rabbit、dragon、snake、horse、sheep、monkey、rooster、dog、pig。请根据以下举例总结出判断方法:2016年是猴年,因为:2016 % 12 == 0;2017年是鸡年,因为:2017 % 12 == 1 。
Java基础 -- 第03章:选择结构[云图智联]

3.补充

3.1 比较两个字符串是否相等:equals()

String name="张三";
boolean isEqual=name.equals("李四");
System.out.println(isEqual);   //false

3.2 分解获取4位数字中的百位数字:如int num=5678

3.2.1   方法1:先对100取商,得到56,再对10取余,得到6 ==> int bai=num/100%10;
3.2.2   方法2:先对1000取余,得到678,再对100取商,得到6 ==> int bai=num%1000/100;

3.3 三元运算:

3.3.1   语法:数据类型 变量 =(关系运算)?值1:值2;
3.3.2   说明:当关系运算的结果为true时,变量的值取冒号前的值1,否则取冒号后的值2;
3.3.3   举例:int max=(num1>num2)?num1:num2;,翻译为人话就是:让max等于num1和num2中较大的值。

3.4 判断输入的是否是一个数字:

input(扫描仪对象).hasNextInt(),结果为一个布尔值。

4.常用单词

1. if:如果
2. else:否则
3. break:打断、终止
4. match:匹配
5. gender:性别
6. random:随机
7. switch:转换
8. case:情况、情形
9. exit:退出
10. defalut:默认

免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/