【2-4】《Java流程控制——循环语句》——Scanner接收用户输入、if语句、switch语句、while循环、do while循环、for循环、嵌套循环图形打印、break

流程控制

总结了一下好几天前学习的流程控制的笔记。

一、接收用户输入

使用Java内部提供的Scanner类,用于接收用户键盘输入。Java所提供的一个工具,其中封装了许多方法,每个方法都有不同的功能可供我们使用。

  • 语法格式:类型 变量 = new 类(参数)

    Scanner input = new Scanner(System.in);
    //用于接收各种数据类型:
    int i = input.nextInt();
    //nextLine方法不要与其他next方法同时使用
    String str1 = input.next();
    String str2 = input.nextLine();
    

    new:创建、引用数据类型的对象,可认为是变量值。(对象在后面学到)

    System.in:扫描系统的输入

二、执行结构概述

任何简单和复杂的算法都可以由顺序结构、分支结构和循环结构这三种基本结构组成。

  1. 顺序结构

    按照语句的出现顺序执行

  2. 分支结构

    程序执行时出现分支,根据条件成立与否判断选择哪一条分支

  3. 循环结构

    需要重复执行、运算的一些操作,重复执行某一循环体,直到条件不满足结束

    • 例如:写一个程序计算每个人的考试成绩,此时多次的累加就需要重复执行,这时就可以写一个循环结构
    • 注意:一般来说,循环执行结构一定要有出口

三、if分支

if条件语句:如条件符合,则执行XX代码语句
条件语句为Boolean结果表达式

  • 语法格式(4种)

    //1.如果条件结果为true,则执行体(大括号中的代码)运行
    if(条件语句){...}
    
    //2.如果条件结果为true,则执行体运行,否则执行else后面的语句
    if(条件语句){...}else{...}
    
    //3.两个条件,若满足if条件则执行体运行并结束;若不满足if条件,判断else if条件,满足则执行else if执行体语句
    if(条件语句){}else if(条件语句){}
    
    //4.判断是否满足条件,满足则执行体运行并结束,若前面的条件都不满足,运行最后的else执行体
    if(条件语句){}else if(条件语句){}else{} 
    
  • 例1:判断成绩是否合格

    if(s >= 60) {
        System.out.println("成绩合格");
    } else {
        System.out.println("成绩不合格");
    }
    
  • 例2:判断成绩等级

    if(s > 120 || s < 0) {
    	System.out.println("成绩输入有误");
    } else if(s >= 90) {
         System.out.println("优");
    } else if(s >= 80) {
         System.out.println("良");
    } else if(s >= 70) {
         System.out.println("中");
    } else if(s >= 60) {
         System.out.println("及格");
    } else {
         System.out.println("不及格");
    }
    

四、switch

  • 语法格式:

    //switch块里包含case,表示如果表达式的结果满足取值n,则执行语句块n,直到遇见break关键字,跳出这个选择继续执行下方代码;若所有case都不匹配,则执行default中语句块n+1,直到遇见break
    switch(表达式){ 
        case取值1:语句块1;break; 
        case取值n:语句块n;break; 
        default:语句块n+1;break; 
    } 
    
  • 规则

    • 表达式的结果是int、byte、char、short、String类型
    • case子句中的取值必须是常量(不会变化的值),且不能重复
    • case后面的执行体可写{}也可以不写{}
    • default子句是可选的,可以不写,不写时若没有匹配的case则switch语句不会进行任何操作
  • 特殊情况:若case1子句最后没写break,则不管是否与case2匹配,都会继续执行case2语句,直到遇见break才会跳出选择。

  • 例:根据用户输入月份来判断季节

    switch(month) {
        case 1:
        case 2:
        case 3:
            System.out.printlb("春季");
            break;
        case 4:
        case 5:
        case 6:
            System.out.printlb("夏季");
            break;
        case 7:
        case 8:
        case 9:
            System.out.printlb("秋季");
            break;
        case 10:
        case 11:
        case 12:
            System.out.printlb("冬季");
            break;
        default:
            System.out.println("输入的月份有误,请检查!");
            break;
    }
    

五、循环_while

和if语句类似,条件满足就执行某段代码。

  1. 循环语句功能

    在循环条件满足的情况下,反复执行特定代码

  2. 循环语句分类:(3类)

    for循环

    while循环

    do/while循环

while循环

  • 先判断,若符合条件,循环继续执行,否则循环退出。

  • 语法格式:

    while(条件表达式){ 
        //语句块; 
    }
    
  • 使用while循环的步骤

    1. 分析循环条件(循环次数)和循环操作(循环内容)
    2. 套用while语法写出代码
    3. 检查循环是否能够退出
    int i = 0;
    while(i < 10) {
        //更新循环变量
        i++;
        System.out.println("循环:"+i);
    }
    
  • 例:录入班级人数和学员成绩,计算班级学员的平均成绩

    //s使用变量studentNum记录班级总人数
    int studentNum = input.nextInt();
    //用于记录循环的次数,以及控制循环何时结束
    int i = 0;
    //定义变量sum,用于统计总分数
    int sum = 0;
    whlie(i < studentNum) {
        i++;
        System.out.println("请输入第"+i+"个学生的成绩:");
        int s = input.nextInt();
        sum += s;
    }
    System.out.println("学生的平均成绩为"+sum/studentNum);
    

六、do while循环

先执行,再判断。

  • 语法格式
    do {
    	循环操作
    } while (条件表达式);
    

while和do while的区别:

区别在于第一次判断是否成立,不成立时:while程序不执行,直接结束;do while程序先执行一次执行体中的内容再结束。

while是先判断,如果满足条件则继续执行,否则退出。do while是先执行一次循环体,再判断,如果满足条件继续执行,否则退出。

do while的应用场景比while循环少很多,常用于要做第一次操作。

七、for循环

  • 例:打印文字从0~9

  • while循环:

    int i = 0
    while (i < 10) {
        System.out.println(i);
        i++;
    }
    
  • for循环:

    //for ([定义循环变量];[判断循环条件];][更新循环变量]) {}
    for (int i = 0;i < 10;i++) {
        System.out.println(i);
    }
    for(;;){}//(;;)相当于(;true;)死循环
    

i:控制循环次数的循环变量,值一直会变化
判断循环条件,条件满足一直循环执行,条件不满足循环结束。
i++:更新循环变量

八、循环嵌套图形打印

经常用来执行一些复杂运算

  • 语法格式:
    //外层循环控制内层循环执行10次
    for(int i = 0; i < 10; i++) {
        //内层循环也会执行10次
        for(int j = 0;j < 10;j++) {
            //总共执行100次
        }
    }
    
  • 例:用循环打印一个10行10列的*图形
    //外层循环控制行数
    for(int i = 0; i < 10; i++) {
        //System.out.println("* * * * * * * * * *");
        //内层循环控制列数
        for(int j = 0;j < 10;j++) {
    		System.out.print("* ");
        }
        System.out.println();
    }
    

九、break与continue

循环的退出:break和continue
都能用于退出循环
break用于结束循环,continue用于结束一轮循环中的某一次

  • 例:
    for(int i =0;i < 10;i++) {
        if(i==5) {
            //break结果为0 1 2 3 4
            //break;
            //continue结果为0 1 2 3 4 6 7 8 9
            continue;
        }
        System.out.println(i);
    }
    

区别:i=5时,continue结束了那一次循环,然后继续i++往下执行,从6继续。break直接结束所有循环。

十、如何退出多重循环

for(int i = 0;i < 10;i++) {
    //给循环起别名
    bieming:for(int j = 0;j < 10;j++) {
        System.out.println("i="+i+",j="+j);
        if(i == 5 && j == 5) {
            break bieming;
        }
    }
}

当想要退出n重循环时,只需要给循环起一个别名(任意字母),当触发某条件时,跳出该别名的循环即可。

十一、图形打印详解

嵌套循环打印图形以什么思路思考?
外层循环控制行数,内层循环控制列数。

  • 图形1:
    *
    ***
    *****
    *******
    
  • 解决方案:
    外层循环:4
    内层循环:第一行时循环1次,第二行时循环3次,第三行时循环5次,第四行时循环7次。
    for(int i = 0;i < 4;i++) {
        for(int j = 0;j < i * 2 + 1;j++) {
            System.out.print("*");
        }
        System.out.println();
    }
    

控制行直接数多少行即可,控制列要找到规律,并通过循环条件判断。

  • 图形2:

       *
      ***
     *****
    *******
    
  • 解决方案:
    外层循环:4
    内层循环1:控制空格的列数,第一行时3个空格,第二行时2个空格,第三行时1个空格,第四行时0个空格。
    内层循环2:控制*的列数,第一行时循环1次,第二行时循环3次,第三行时循环5次,第四行时循环7次。

    for(int i = 0;i < 4;i++) {
        //i:0 1 2 3
        for(int j = i+1;j < 4;j++) {
            System.out.print(" ");
        }
        for(int j = 0;j < i*2+1;j++) {
             System.out.print("*");
        }
        System.out.println();
    }
    
  • 图形3:

       *
      ***
     *****
    *******
     *****
      ***
       *
    
  • 解决方案:和图形三一样的,就是反过来了。

    for(int i = 0;i < 4;i++) {
        for(int j = i + 1;j < 4;j++) {
            System.out.print(" ");
        }
        for(int j = 0;j < i*2+1;j++) {
            System.out.print("*");
        }
        System.out.println();
    }
    for(int i = 0;i < 3;i++) {
        for(int j = 0;j < i+1;j++) {
            System.out.print(" ");
        }
        for(int j = 6;j > i*2+1;j--) {
            System.out.print("*");
        }
        System.out.println();
    }
    
  • 图形四:思考ing

       *
      * *
     *   *
    *     *
     *   *
      * *
       *
    

十二、判断用户输入类型

在接收用户输入的数据前判断数据类型

if(input.hasNextInt()) {
    ...
} else {
    System.out.println("输入类型错误");
}

总结

流程控制是相当重要的一个内容,几天没看就不熟悉了,这个脑子。多看多记多练习!!!

©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页