← 返回首页
JavaSE系列教程(九)
发表时间:2019-11-27 17:47:08
讲解Java的程序结构之选择结构

程序有三种基本结构分别是:顺序、选择和循环。为什么没有第四种结构呢?正所谓戏如人生,人生就是顺序、选择、循环。程序又何尝不是如此呢?

1、顺序结构:只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。 2、选择结构:用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。 3、循环结构:在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。

顺序结构无需讨论,我们直接学习选择结构。

1.简单if语句

如果条件为真,则执行代码块。

if(条件){
  代码块 //条件成立之后要执行的代码,可以是一条语句,也可以是一组语句      
}

实例: 如果小明期末考试考了100分,则奖励变形金刚一个。

Scanner input = new Scanner(System.in);
System.out.print("请输入成绩");
int score = input.nextInt();
if(score == 100){
   System.out.println("奖励变形金刚!");         
} 

2.if-else语句

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

实例: 如果小明期末考试考了80分以上,则奖励变形金刚一个,否则暴打一顿。

Scanner input = new Scanner(System.in);
System.out.print("请输入成绩");
int score = input.nextInt();
if(score >=80 ){
   System.out.println("奖励变形金刚!");         
}else{
   System.out.println("暴打一顿");
} 

3.多重if-else选择结构

语法:

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

实例: 根据考试成绩,输出考试成绩等级。

Scanner sc = new Scanner(System.in);
int score;
System.out.println("请输入考试成绩:");
score = sc.nextInt();
if (score > 100 || score < 0) {
    System.out.println("考试分数非法!");
    System.exit(0); //程序无条件立即退出。
}

if(score>=90 && score<=100){
    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("不及格");
}

4.嵌套if-else语句

语法:

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

实例: 凤姐要招募男盆友,条件是"高富帅",身高不能低于180,银行存款不能低于100万,长的要像王力宏一样帅。 从控制台输入身高、体重和存款金额,显示结果。

int money; //存款
int height; //身高
int choice; //选择值

Scanner sc = new Scanner(System.in);
System.out.println("请输入您的身高(cm):");
height = sc.nextInt();

if(height >= 180){
    //身高符号标准
    System.out.println("请输入存款数量(万):");
    money = sc.nextInt();
    if(money>=100){
    System.out.println("请输入您长的像谁?");
    System.out.println("1.宋小宝  2.潘长江  3.王力宏");
    choice = sc.nextInt();
    if(choice == 3){
        System.out.println("您就是我心中的青蛙王子");

    }else{
        System.out.println("丑八怪靠边站");
    }

    }else{
    System.out.println("穷光蛋靠边站");
    }
}else{
    System.out.println("身高不符合,靠边站!");
}

5.switch-case语句

语法:

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

1)JDK 1.7后,switch语句小括号里可以是 int、short、byte、char、枚举、String类型表达式 2)case 后必须是一个常量,数据类型与switch后表达式的值相同,通常是一个固定值,case块可以有多个,顺序可以改变,但每个case后的值必须各不相同 3)default:其他情况都不满足时执行default。default后要紧跟冒号,default跟case的顺序可以变动,但通常default块放在结尾,也可以省略。

实例: 根据考试成绩,输出考试成绩等级。使用switch-case实现。

Scanner sc = new Scanner(System.in);
int score;
System.out.println("请输入考试成绩:");
score = sc.nextInt();

if (score > 100 || score < 0) {
    System.out.println("考试分数非法!");
    System.exit(0);
}
int level = score / 10;
switch (level) {
    case 10:
    case 9:
    System.out.println("成绩优秀");
    break;
    case 8:
    System.out.println("成绩良好");
    break;
    case 7:
    case 6:
    System.out.println("成绩及格");
    break;
    default:
    System.out.println("不及格");
        break;
}

小结:

1)基本if选择结构:可以处理单一或组合条件的情况。

2)if-else选择结构:可以处理简单的条件分支情况。

3)多重if选择结构:可以处理复杂的条件分支情况。多重if选择结构适合在判断条件是范围区间的情形下使用。

4)嵌套if选择结构:这种结构一般用于复杂的流程控制中。

5)switch选择结构:当需要多重分支,使用switch选择结构可以代替多重if选择结构。但是更适合在判断条件是某些点的情形下使用。