02.选择结构

1.程序结构:顺序结构,循环结构,选择结构

2.两个变量表比较,如果变量是基本数据类型(byte,short,int,long,float,double,char,boolean)用关系运算符(>,>=,<,<=,==,!=)表比较;如果变量是引用数据类型(String)表比较用equals()

//基本数据类型比较,用关系运算符
        int num1=10;
        int num2=8;
        boolean result1=num1==num2;
        System.out.println(result1);
        
        //引用数据类型比较用equals()
        String s1="我是中国人";
        String s2="我是中国人";
        boolean result2=s1.equals(s2);
        System.out.println(result2);

3.从键盘上接收用户的数据:

3.1:在类框架上面导包:import java.util.Scanner;
3.2:获得从键盘上接收数据的能力
Scanner input=new Scanner(System.in);
3.3:从键盘上接收数据

      int num1=input.nextInt();
      double num2=input.nextDouble(); 
      String num3=input.next();    

注意:键盘上不能接收char类型数据。

      eg://导包
import java.util.Scanner;
/**
public class UserInput{
/**
*程序的入口方法
*/
public static void main(String[] args){
  //获得从键盘上接收数据的能力
  Scanner input=new Scanner(System.in);
      System.out.println("请输入一个整数");
      //从键盘上接收一个整数并存在变量num1中
      int num1=input.nextInt();
      System.out.println("请输入一个小数:");
      //从键盘上接收一个double类型的数并存在变量num2中
      double num2=input.nextDouble();
      
      System.out.println("请输入一个字符串:");
      //从键盘上接收一个String类型的数并存在变量num3中
      String num3=input.next();
      
      System.out.println("从键盘上接收的整数为:"+num1);
      System.out.println("从键盘上接收的小数为:"+num2);
      System.out.println("从键盘上接收的字符串为:"+num3);
  }
}

4.基本if选择结构:解决只有一种情况的问题

4.1:语法:if(条件){
代码块;
}

基本if选择结构

4.2:执行流程:如果条件为true,就执行大括号中的代码块;如果条件为false,就执行if结构之后的语句。

      eg:public static void main(String[] args){
      System.out.println("中午的歌是否唱得好?(y/n)");
      //获得从键盘上接收数据的能力
      Scanner input=new Scanner(System.in);
      //从键盘上接收一个字符串并存在变量中
      String answer=input.next();
      //对结果判断
      if(answer.equals("y")){
          System.out.println("给每位同学发朵大红花");
      }
  }

5.if-else结构:解决有两种情况,这两情况始终要执行其中一种

5.1:语法 :if(条件){
代码块1;
}else{
代码块2;
}

if-else结构

5.2:执行流程:如果条件为true,就执行代码块1;如果条件为false,就执行代码块2;

      eg:public static void main(String[] args){
      System.out.println("明天中午的歌是否唱得好?(y/n)");
      //获得具有从键盘上接收数据的能力
      Scanner input=new Scanner(System.in);
      //从键盘上接收一个字符串并存在变量中
      String str1=input.next();
      //判断满足哪种情况
      if(str1.equals("y")){
          System.out.println("老师请大家吃饭");
      }else{
          System.out.println("大家请老师吃饭");
      }
  }

6.多重if选择结构:解决有两种及以上情况的问题

6.1:语法:if(条件1){
代码块1;
}else if(条件2){
代码块2;
}else if(条件3){
代码块3;
}else{
代码块4;
}

多重if选择结构

6.2:执行流程:如果条件1为true,就执行代码块1,再执行多重if结构之后的语句;如果条件1为false,就判断条件2,如果条件2为true,就执行代码块2,再执行多重if结构之后的语句;如果条件2为false,就判断条件3,如果条件3为true,就执行代码块3,再执行多重if结构之后的语句;如果条件3为false,就执行else块中代码块4。
6.3:结构特点:
6.3.1:多重if选择结构中if块有且仅有一个,else if块可以有0个到多个,else块可以有0个到1个。
6.3.2:多重if选择结构中,最多执行一个情况(分支),最少一个情况都不执行(没有else块并且前面的条件都为false);
6.3.3: 如果用多重if选择结构解决多种情况(分支)等值判断问题,分支之间可以互换置不影响结果;如果用多重if选择结构解决多种情况(分支)范围判断问题,分支之间不一定可以互换位置。

      eg:public static void main(String[] args){
      System.out.println("今天是星期几?(1-7):");
      //获得具有从键盘上接收数据的能力
      Scanner input=new Scanner(System.in);
      //从键盘上接收一个字符串并存在变量中
      int today=input.nextInt();
      //判断满足哪种情况
      if(today==1){
          System.out.println("早餐吃包子");
      }else if(today==2){
          System.out.println("早餐吃馒头");
      }else if(today==3){
          System.out.println("早餐吃油条豆浆");
      }else if(today==4){
          System.out.println("早餐吃肠粉");
      }else if(today==5){
          System.out.println("早餐吃拉面");
      }else if(today==6){
          System.out.println("早餐吃豆皮");
      }else{
          System.out.println("睡觉");
      }
  }
  public static void main(String[] args){
  System.out.println("请输入成绩(0-100):");
  //获得具有从键盘上接收数据的能力
  Scanner input=new Scanner(System.in);
  //从键盘上接收一个数并存在变量中
  double score=input.nextDouble();
  
  //判断满足哪种情况
  if(score>=90){
      System.out.println("优秀");
  }else if(score<80&&score>=60){
      System.out.println("合格");
  }else if(score<90&&score>=80){
      System.out.println("良好");
  }else{
      System.out.println("再接再厉");
  }

}

7.嵌套选择结构:在一个选择结构的代码块中完整包含了另一个选择结构

7.1:选择结构之间可以任意嵌套,但是嵌套要正确。
7.2:选择结构之间可以多层嵌套,但是一般两到三层嵌套。
题目:参加百米赛跑,如果跑步时间超过10秒,谢谢参与;如果跑步时间不超过10秒,恭喜你进入决赛;进入决赛后,输入性别,如果性别是男,恭喜你进入男子组决赛;如果性别是女,恭喜你进入 女子组决赛

  eg:public static void main(String[] args){
  //获得具有从键盘上接收数据的能力
  Scanner input=new Scanner(System.in);
  System.out.println("请输入你百米跑步的时间:");
  //从键盘上接收时间,并存在变量中
  double time=input.nextDouble();
  if(time>10){
      System.out.println("谢谢参与");
  }else if(time>=0&&time<=10){
      System.out.println("请输入你的性别(男/女):");
      //从键盘上接收性别,并存在变量中
      String sex=input.next();
      if(sex.equals("男")){
          System.out.println("恭喜你进入男子组决赛");
      }else if(sex.equals("女")){
          System.out.println("恭喜你进入女子组决赛");
      }else{
          System.out.println("性别输入有误!");
      }
  }else{
      System.out.println("时间输入有误!");
  }

}

8.switch结构:解决多种情况等值判断问题

8.1:语法:switch(表达式){
case 常量1:
代码块1;
break;
case 常量2:
代码块2;
break;
...
default:
default中的代码块;
break;
}
8.2:执行流程:如果表达式的结果等于常量1,就执行代码块1,遇到break或者结尾}就跳出switch结构,执行之后语句;如果表达式的结果等于常量2,就执行代码块2,遇到break或者结尾}就跳出switch结构,执行之后语句;如果表达式不等于case后面的任意一个常量值,就执行default中的代码块遇到break或者结尾}就跳出switch结构。
8.3:结构特点:
8.3.1:switch结构中的表达式和常量,在jdk1.5前,支持byte,short,int,char类型
在jdk1.5后,支持枚举类型
在jdk1.7后,支持String类型。
8.3.2:switch结构中,case块可以有0个到多个,default块可以有0个到1个。
8.3.3:在同一个switch结构中,case后面的常量值必须不同。
8.3.4:switch结构中,case块中break可以省略,但是省略break后,如果表达式等于当前case块的常量,执行完这个case块中的}代码后,没有遇到break和结尾会继续往下执行并且不再判断,直到遇到break和}结尾才会跳出switch结构.
一般情况下,case块中break不要省略。
8.3.5:switch结构中,default块可以放在switch结构的大括号任何地方,不影响程序的 执行。
8.3.6:switch结构中,case块之间可以互换位置,不影响程序的执行。
8.3.7:switch结构中,可以执行0个到多个情况。

  eg:public static void main(String[] args){
  System.out.println("今天是星期几?(1-7):");
  //获得具有从键盘上接收数据的能力
  Scanner input=new Scanner(System.in);
  //从键盘上接收一个字符串并存在变量中
  int today=input.nextInt();
  switch(today){
      case 1:
          System.out.println("早餐吃包子");
          break;
      case 2:
          System.out.println("早餐吃馒头");
          break;
      case 3:
          System.out.println("早餐吃油条豆浆");
          break;
      case 4:
          System.out.println("早餐吃肠粉");
          break;
      case 5:
          System.out.println("早餐吃拉面");
          break;
      case 6:
          System.out.println("早餐吃豆皮");
          break;
      case 7:
          System.out.println("睡觉");
          break;
      default:
          System.out.println("你的输入有误!");
          break;
  }
}

9.switch结构 VS 多重if选择结构

9.1:相同点:
9.1.1:都可以解决多种情况等值判断问题,首选switch结构;
9.1.2:在解决多种情况等值判断问题时,分支之间可以互换位置。
9.1.3:都是最少一种情况(分支)都不执行。
9.2:不同点:
9.2.1:作用不同:switch结构只能解决多种情况等值判断问题;
多重if选择结构既可以解决多种情况等值判断问题,又可以解决多种情况范 围判断问题。
9.2.2:条件不同:switch结构中的表达式和常量有类型限制;
多重if选择结构的条件是关系表达式,条件的结果是boolean.
9.2.3:执行不同:switch结构可以执行多个分支的代码块;多重if选择结构最多只能执行一个分支的代码块。
9.2.4:break不同:switch结构中可以用break跳出结构,多重if选择结构不能单独用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容