Java基本语法--程序流程控制

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构、分支结构、循环结构。本篇博客主要是对Java基本语法中的程序流程控制进行详细讲解。



目录:

  • 顺序结构

    程序从上到下逐行地执行,中间没有任何判断和跳转

  • 分支结构

    根据条件,选择性地执行某段代码

    • if-else分支语句
    • switch-case分支语句
  • 循环结构

    根据循环条件,重复性的执行某段代码

    • for循环语句
    • while循环语句
    • do....while循环语句
  • 其他内容
    • 死循环&嵌套的应用
    • break&continue关键字
    • 附加说明

??:JDK1.5提供了foreach循环,方便的遍历集合、数组元素



? ? ? ? ? ∮....

顺序结构

Java中定义成员变量时采用合法的前向引用

/*正确方式,在代码块内顺序执行*/
public class Demo11{
    int number1 = 10;
    int number2 = 12;
    int number3 = number1 + number2;
    System.out.println(number3);
}
/*错误
class Demo2{
    int num1 = 10;
    int num3 = num1 + num2;
    int num2 = 12;
    System.out.println(num3);
}
*/


? ? ? ? ? ∮....

分支结构

if-else分支语句

if 语句三种格式:

if(条件表达式){
    执行代码块;
}

if(条件表达式){
    执行代码块1;
}esle{
    执行代码块2;
}

if(条件表达式1){
    执行代码块1;
}else if(条件表达式2){
    执行代码块2;
}
......
else{
    执行代码块n;
}

if-else使用说明:

??条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量

? 语句块只有一条执行语句时,一对{}可以省略,但建议保留

? if-else语句结构,根据需要可以嵌套使用

? 当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略

? 当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓;当多个条件是“包含”关系时,“小上大下 / 子上父下”

? 分支结构最终返回的是一个值

练习:

判断成绩:
0<=score<60:不及格;
60<=score<70:及格;
70<=score<80:良好;
80<=score<100:优秀;

public class scoreDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入成绩(百分制整数):");
        int score = sc.nextInt();
        // 多选一
        if(score >= 0 && score < 60) {
            System.out.println("成绩不及格");
        }else if(score >= 60 && score < 70) {
            System.out.println("成绩及格");
        }else if(score >= 70 && score < 80) {
            System.out.println("成绩良好");
        }else if(score >= 80 && score <= 100) {
            System.out.println("成绩优秀");
        }else {
            System.out.println("请输入正确的百分制分数");
        }
        //嵌套使用
        if(score <= 100){
            if(score <= 80) {
                if(score <= 70) {
                    if(score <= 60) {
                        System.out.println("成绩不及格");
                    }else {
                        System.out.println("成绩及格");
                    }
                }else {
                    System.out.println("成绩良好");
                }
            }else {
                System.out.println("成绩优秀");
            }
        }
    }
}

switch-case分支语句

switch-cas结构:

switch(表达式){
    case 常量1:
        执行语句1
        //breark;
    case 常量2:
        执行语句2
        //breark;
    ......
    case 常量n:
        执行语句n
        //breark;
    default:
        执行语句;
        //break;
}

switch-case使用说明:

? witch(表达式)中表达式的值 必须是下述几种类型之一:byte ,short,char,int,举 枚举 (jdk 5.0),String (jdk 7.0)

? case子句中的值必须是常量,不能是变量名或不确定的表达式值

? 同一个switch语句,所有case子句中的常量值互不相同

? break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾,根据实际情况选择加不加

? default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default,相当于if-else中末尾的else

练习:

判断成绩:

public class switchScoreDemo {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入成绩(百分制):");
        int score = sc.nextInt();
        switch (score / 10) {
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            System.out.println("成绩不及格");
            break;
        case 6:
            System.out.println("成绩及格");
            break;
        case 7:
            System.out.println("成绩良好");
            break;
        case 8:
        case 9:
        case 10:
            if(score==100){
                System.out.println("成绩优秀");
                break;
            }
        default:
            System.out.println("请输入正确的百分制整数");
            break;
        }
    }
}


? ? ? ? ? ∮....

循环结构

循环语句的四个组成部分:

? 初始化部分(init_statement)

? 循环条件部分(test_exp)

? 循环体部分(body_statement)

? 迭代部分(alter_statement)

for循环语句

for循环语法格式:

for(?初始化部分;?循环条件部分;?迭代部分){
    ?循环体部分;
}
//执行过程?-?-?-?-?-?-?-...-条件不满足/break跳出

for循环使用说明:

? ②循环条件部分为boolean类型表达式,当值为false时,退出循环

? ①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔

? ④可以有多个变量更新,用逗号分隔

? for循环可以进行多重嵌套

? 使用break可以跳出循环(for,while,do-while)

? ①可以在for循环外定义,④可以在③中定义,但是②循环条件必须在for()中声明,需要注意的是①定义在for()中,其作用域就在for(){}内

练习:

1、输出abcbcbc

2、输出9*9乘法表

public class forDemo {
    public static void main(String args[]) {
        //输出abcbcbc方法一
        int n = 1;
        for(System.out.print("a");n<=3;System.out.print('c'),n++) {
            System.out.print('b');
        }
        System.out.println( );

        //输出abcbcbc方法二
        int m = 1;
        System.out.print('a');
        for(;m<=3;) {
            m++;
            System.out.print("bc");
        }
        System.out.println("");

        //9*9乘法表
        for(int i = 1; i <= 9; i++) {
            for(int j = 1; j <= i; j++) {
                System.out.print(i + "*" + j + "=" + (i*j)+"    ");
            }
            System.out.println();
        }
    }
}

展示效果:

while循环语句

while循环语法格式:

?初始化部分
while(?循环条件部分){
    ?循环体部分;
    ?迭代部分;
}
//执行过程?-?-?-?-?-?-?-...-条件不满足/break跳出

while循环使用说明:

? 注意不要忘记声明④迭代部分。否则,循环将不能结束,变成死循环

? for循环和while循环,do...while循环可以相互转换

练习:

输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数
字立方和等于其本身。

例如: 153 = 1*1*1 + 3*3*3 + 5*5*5

public class whileDemo {
    public static void main(String args[]) {
        System.out.println("水仙花数:");
        int i = 100;
        while(i < 1000) {
            int hundred = i / 100;
            int decade = i % 100 /10;
            int bits = i % 10;
            int num = hundred * hundred * hundred + decade * decade * decade + bits * bits * bits;
            if(i == num) {
                System.out.println(i);
            }
            i++;
        }
    }
}

do...while循环语句

?初始化部分
do{
    ?循环体部分;
    ?迭代部分;
}while(?循环条件部分);
//执行过程?-?-?-?-?-?-...-条件不满足/break跳出

do...while循环使用说明:

? while循环和do...while循环用法一致,不同的是do...while至少执行一次

练习:

输出0123456789字符串

public class doWhileDemo {
    public static void main(String args[]) {
        int i = 0;
        String s = "";
        do{
            s += i;
            i++;
        }while(i <= 9);
    }
}

? ? ? ? ? ∮....

其他内容

无限循环&嵌套的应用

  • “无限循环”

    //格式
    for(;;){
        执行语句;
        //在某种条件下break跳出循环
    }
    while(true){
        执行语句;
        //在某种条件下breaK跳出循环
    }
    do{
        执行语句;
        //在某种条件下break跳出循环
    }while(true);

    ? 无限循环存在的原因是并不
    知道循环多少次,需要根据循环体内部某些条件来控制循环的结束

  • 嵌套

    ? 分支语句,循环语句都可以相互嵌套,但是最好不要超过三层

    ? 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环或内层循环。

    ? 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始外层循环的下一次的循环

    ? 设外层循环次数为m次,内层为n次,外层循环执行一次内层循环执行n次,总的内层循环体实际上需要执行m*n次

break&continue关键字

  • break关键字

? break语句用于终止某个语句块的执行

? break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是
哪一层语句块

public class Demo {
    public static void main(String args[]) {
        //9*9乘法表
        for(int i = 1; i <= 9; i++){
            for(int j = 1; j <= i; j++){
                System.out.print(i + "*" + j + "=" + (i*j)+"    ");
            }
            System.out.println();
        }
        // 当i=6时直接break
        System.out.println("直接break");
        for(int i = 1; i <= 9; i++){
            for(int j = 1; j <= i; j++){
                if(j == 6) {
                    break;
                }
                System.out.print(i + "*" + j + "=" + (i*j)+"    ");
            }
            System.out.println();
        }

        System.out.println("break la2");
        System.out.println("break la2");
        la1: for(int i = 1; i <= 9; i++){
             la2:for(int j = 1; j <= i; j++){
                if(j == 6) {
                    break la2;
                }
                System.out.print(i + "*" + j + "=" + (i*j)+"    ");
            }
            System.out.println();
        }

        System.out.println("break la1");
        la1: for(int i = 1; i <= 9; i++) {
            la2: for(int j = 1; j <= i; j++){
                    if(j == 6) {
                        break la1;
                    }
                    System.out.print(i + "*" + j + "=" + (i*j)+"    ");
            }
            System.out.println();
        }  

        System.out.println();
        System.out.println("continue la2");
        la1: for(int i = 1; i <= 9; i++) {
            la2: for(int j = 1; j <= i; j++){
                    if(j == 6) {
                        continue la2;
                    }
                    System.out.print(i + "*" + j + "=" + (i*j)+"    ");
            }
            System.out.println();
        }
    }
}

展示效果:

  • continue关键字

? continue只能使用在循环结构中

? continue语句用于跳过其所在循环语句块的一 一 次执行,继续下一次循环

? continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环,同break的用法类型

附加说明

? eturn:并非专门用于结束循环的,它的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束

? 与break和continue不同的是,return直接结束整个方法,不管这个return处于多少层循环之内

? break只能用于switch语句和循环语句中

? continue 只能用于循环语句中

? break和continue二者功能类似,但continue是终止本次循环,break是终止本层循环

? break、continue之后不能有其他的语句,因为程序永远不会执行其后的语句

? 标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面

? 很多语言都有goto语句,goto语句可以随意将控制转移到程序中的任意一条
语句上,然后执行它。但使程序容易出错。Java中的break和continue是不同于goto的



本博客与CSDN博客???Asio君???同步发布

原文地址:https://www.cnblogs.com/asio/p/12285964.html

时间: 2024-10-10 20:06:27

Java基本语法--程序流程控制的相关文章

Java基础第四天总结——Java基础语法——程序流程控制

目录: 一.程序流程控制 二.顺序结构 三.分支语句1:if-else结构 四.分支语句2:switch-case结构 五.循环结构 六.循环结构1:for循环 /*--------------------------黄金分割线----------------------------------*/ 一.程序流程控制 > 顺序结构 ● 自上逐行向下执行 >分支结构 ● 根据条件,选择性执行某段代码 ● 有if-else和switch-case两种分支语句 >循环结构 ● 根据循环条件,重

黑马程序员——Java基础语法(二)---流程控制

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 本文主要介绍java基础语法中的流程控制,流程控制是我们写出灵活代码的基础.常见的流程控制主要有四类:判断结构.选择结构.循环结构.其他控制结构 一.判断结构 判断结构的标志是if语句,if语句主要有三种表现形式: 1.if(条件表达式) { 执行语句 } 注意: 1.如果if语句中只有一条语句,那么可以不写大括号.不过初学者一定要写括号,以免出错. 2.如果if语句没写大括号,if就只能控制

韩顺平循序渐进学java 第04讲 流程控制

4.1 Java基本语法-三大流程控制 4.1.1 顺序控制 4.1.2 分支控制 ① 单分支 If(条件表达式) { 语句; } ② 双分支 If(条件表达式) { 语句; }else { 语句; } ③ 多分支 v  方法1: If(条件表达式) { 语句; }else if(条件表达式) { 语句; }else { 语句; } v  方法2: switch(条件表达式) { case 常量1: 语句1; break; case 常量2: 语句2; break; ... case 常量n:

Java架构师成长之道之程序流程控制

Java架构师成长之道之程序流程控制 Java架构师成长之道 4.1 程序流程控制概述 之前编写的绝大多数程序都是顺序执行,也就是从main函数开始,由上到下一行一行的执行,也被称为顺序结构. 在生活中除了顺序结构以外还有选择结构.循环结构,例如在淘宝购物时登录账号就是一个选择结构,如果输入的正确的用户名和密码才能购买商品,否则就会提示用户名密码错误. 而在淘宝首页的Banner就是一个循环结构,在指定的时间内循环切换图片. 在Java中,支持if/else和switch case两种选择结构,

逻辑运算_三元运算符_程序流程控制

 //逻辑运算符   /*       逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 .      "&"和"&&"的区别: 单&时,左边无论真假,右边都进行运算:       双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算.       "|"和"||"的区别同理,||表示:当左边为真

Unit04: JavaScript 概述 、 JavaScript 基础语法 、 流程控制

Unit04: JavaScript 概述 . JavaScript 基础语法 . 流程控制 my.js function f3() { alert("唐胜伟"); } demo1.html  演示点击按钮,弹出提示框 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <

HTML5独家分享:原生JavaScript学习笔记2——程序流程控制

当当当当 .....楼主又来了!新一期的JS学习笔记2--程序流程控制更新了! 当当当当 .....楼主又来了!新一期的JS学习笔记2--程序流程控制更新了! 想一键获取全部JS学习笔记的可以给楼主留言哦! js中的程序控制语句 常见的程序有三种执行结构: 1. 顺序结构 2. 分支结构 3. 循环结构 顺序结构:程序从第一行开始执行,按顺序执行到最后一行 分支结构:就像一条岔路口,必须选择且只能选择其中一条道路继续走下去,不能同时执行两个分支里的代码. 我们可以使用如下三种方式来实现程序的分支

Day04 程序流程控制

##程序流程控制 * 判断结构 * 选择结构 * 循环结构 ###判断结构 > ####if语句 三种格式 ```java /*一层判断*/ if(条件表达式)        //如果if控制的语句只有一条,那么下面的大括号可以省略,即控制距离if最近的单条语句:else同理. { 执行语句; } ``` ```java /*两层判断*/ /* 三元运算符 变量 = (条件表达式)?表达式1:表达式2; 三元运算符优点是可以看做简化的if else语句,缺点是因为本身是运算符,运算结束后必须有一

python语法之流程控制(if while for)

一.python语法之流程控制 1.1什么是流程控制? 流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构).分支结构(判断).循环结构(while for) 二.分支结构 2.1 什么是分支结构? 分支结构就是根据条件判断的真假去执行不同分支对应的子代码 2.2 为什么要用分支结构? 为了让计算机可以有像人一样的逻辑判断能力去做事 2.3 怎么使用分支结构? 引入if语句 定义:主要是用于判断事物的对错 真假 是否可行 语法结构