深入学习Java语言程序设计——第三部分

选择结构

  • 概述
  • 选择
  • 单分支if语句
  • 例题讲解
  • 双分支if-else语句
  • 例题讲解
  • 条件运算符
  • 多分支的if-else语句
  • 例题讲解
  • 嵌套的if语句
  • 例题讲解
  • switch语句结构
  • 例题讲解
  • 代码演示
  • 运行结果
  • 概述

    Java中的控制结构,包括:
    1、选择结构( if、if-else、switch )
    2、循环结构( while、do-while、for )
    3、异常处理语句( try-catch-finally、throw)

    选择

    单分支if语句

    语法格式如下所示:
    if(条件表达式) {
    // 语句序列
    }
    单分支if语句中,条件表达式是一个布尔值
    当值为true时,才会执行 {} 中的语句。
    否则,执行 if 结构后面的语句。

    例题讲解

    例:在求圆面积问题中,要求只有当radius>=0时才计算圆的面积。

    if (radius >= 0) {
    area = radius * radius * 3.14159;
    System.out.println("The area for the circle of radius " + radius + " is " + area);
    }

    双分支if-else语句

    if…else语句是指如果满足给定条件,就进行某种处理,否则就进行另一种处理,其语法格式如下所示:
    if (条件表达式){
    语句序列1

    else{
    语句序列2

    例题讲解

    例:在求圆面积问题中,要求只有当radius>=0时才计算圆的面积,否则,程序给出错误提示。

    if (radius >= 0){
    area = radius * radius * 3.14159;
    System.out.println("The area for the circle of radius "
    + radius + " is " + area);
    }
    else {
    System.out.println(“Negative input”);
    }

    条件运算符

    条件运算符(conditional operator)格式如下:
    condition ? expression1 : expression2
    条件运算符可实现if~else结构。
    若max, a, b是int型变量:
    if (a > b) {
    max = a;
    }else {
    max = b;
    }
       与max = (a > b)? a : b ;一样

    多分支的if-else语句

    if (条件表达式1){
    语句序列1
    }
    else if (条件表达式2){
    语句序列2
    }
    ......
    else if (条件表达式n ){
    语句序列n
    }
    else{
    语句序列n+1
    }
    条件表达式的结果必须都是布尔型

    例题讲解

    例:输入学生的百分制成绩,打印输出等级的成绩。等级规定为,
    90分及以上的为“A”
    80分及以上的为“B”
    70分及以上的为“C”
    60分及以上的为“D”
    60分以下为“E”。

    if (score > =90.0)
    grade = ‘A’;
    else if (score >= 80.0)
    grade = ‘B’;
    else if (scroe >= 70.0)
    grade = ‘C’;
    else if (score >= 60.0)
    grade = ‘D’;
    else
    grade = ‘E’;

    嵌套的if语句

    其语法形式如下:
    if (表达式1)
       if (表达式2)
       语句1
      else 语句2

    else
       if (表达式3)
       语句3
       else 语句4

    嵌套应分层缩进书写;
    else总是与它上面最近的未配对的if配对。(就“近”原则)
    嵌套的层数不宜太多,一般以2~3层为宜

    例题讲解

    例:求a、b和c中最大值并将其保存到max中。

    if ( a>b )
       if ( a>c )
          max=a;
          else max=c;
    else
       if ( b>c )
          max=b;
          else max=c;

    switch语句结构

    针对表达式的值做出判断,从而决定执行哪些语句。
    switch(表达式){
     case 常量表达式1:
          语句序列1;
          break
      case 常量表达式2:
          语句序列2;
          break;
    ......
     case 常量表达式n:
          语句序列n;
          break;
      default:
          语句序列n+1;

    注意
    表达式:类型为byte,short,int,char,enum,String
    并且与各个case后面的常量表达式值的类型一致。
    语句序列:每个case子句后面可以跟多条语句,这些语句可以不用大括号括起来。
    break:一般都有break,若没有则多个case共享一个分支。结束switch结构。
    default:可有可无。 有时,当表达式的值与任何一个case后的常量表达式的值不相同时执行。没有,不执行任何操作,直接跳出switch结构。

    例题讲解

    例:编写程序,从键盘输入一个年份(如2020年)和一个月份(如2月),输出该月的天数(29)。

    闰年的定义是:
    如果年份能被4整除但不能被100整除,则是闰年。
    如果年份能被400整除,则也是闰年。

    代码演示
    package shujia_test1;
    
    import java.util.Scanner;
    
    public class Csdn3_1 {
    	public static void main(String[] args) {
    		Scanner input = new Scanner(System.in);
    		System.out.print("输入一个年份:");
    		int year = input.nextInt();
    		System.out.print("输入一个月份:");
    		int month = input.nextInt();
    		int numDays = 0;
    		switch (month) {
    		case 1:
    		case 3:
    		case 5:
    		case 7:
    		case 8:
    		case 10:
    		case 12:
    			numDays = 31;
    			break;
    		case 4:
    		case 6:
    		case 9:
    		case 11:
    			numDays = 30;
    			break;
    		case 2: // 对2月需要判断是否是闰年
    			if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0)){
    				numDays = 29;
    			}else{
    				numDays = 28;}
    			break;
    		default:
    			System.out.println("月份非法.");
    			break;
    		}2020
    		System.out.println(" 该月的天数为:" + numDays);
    	}
    }
    
    
    运行结果


    博主用心写,读者点关注,互动传真情,知识不迷路。

    作者:倾听一世,繁花盛开

    物联沃分享整理
    物联沃-IOTWORD物联网 » 深入学习Java语言程序设计——第三部分

    发表回复