• JAVA初阶——程序逻辑控制


    目录

    一、顺序结构

    二、分支结构

    1、if语句

    (1)、if语句

    (2)、if ~ else语句

    (3)、if ~ else if ~ else语句

    2、switch语句

    三、循环结构

    1、for()循环

    2、break

    3、continue

    4、while()循环

    5、do~while()循环

    四、输入输出

    1、输出到控制台

    2、从键盘输入


    一、顺序结构

    顺序结构就是按照代码书写的顺序执行。如果代码的顺序改变, 则执行顺序也发生变化。

    1. System.out.println("a");
    2. System.out.println("b");
    3. System.out.println("c");
    4. //运行结果
    5. //a
    6. //b
    7. //c
    8. //代码改变后
    9. System.out.println("a");
    10. System.out.println("c");
    11. System.out.println("b");
    12. //运行结果
    13. //a
    14. //c
    15. //b

    二、分支结构

    1、if语句

    (1)、if语句

    定义:如果布尔表达式结果为true,执行if中的语句,否则不执行。

    1. if(布尔表达式){
    2. // 语句
    3. }

    例:

    1. int score = 92;
    2. if(score >= 90){
    3. System.out.println("吃个大鸡腿!!!");
    4. }
    5. //score大于90,表达式为true,执行内部语句

    (2)、if ~ else语句

    定义:如果布尔表达式结果为true,则执行if中语句,否则执行else中语句

    1. if(布尔表达式){
    2. // 语句1
    3. }else{
    4. // 语句2
    5. }

    例:

    1. int score = 55;
    2. if(score >= 60){
    3. System.out.println("通过");
    4. }else{
    5. System.out.println("不通过");
    6. }
    7. //score小于60if语句不执行,执行else语句

    (3)、if ~ else if ~ else语句

    定义:表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3

    1. if(布尔表达式1){
    2. // 语句1
    3. }else if(布尔表达式2){
    4. // 语句2
    5. }else{
    6. // 语句3
    7. }

    例:

    1. int score=66
    2. if(score >= 90){
    3. System.out.println("优秀");
    4. }else if(score >= 70 && score < 90){
    5. System.out.println("良好");
    6. }else if(score >= 60 && score < 70){
    7. System.out.println("及格");
    8. }else if(score >= 0 && score < 60){
    9. System.out.println("不及格");
    10. }else{
    11. System.out.println("错误数据");
    12. }
    13. //score大于60小于70,所以执行语句3

    注:

    1、Java 中推荐使用“ { ”放在 “else”/“else if” 同一行,代码更紧凑。

    2、分号多余。

    例:

    1. int x = 20;
    2. if (x == 10);
    3. {
    4. System.out.println("hehe");
    5. }
    6. //运行结果为hehe
    7. //if语句后多写了一个分号, 导致分号成为了if语句的语句体, 而{ }中的代码已经成为了一个和if无关的代码块.

    3、悬垂 else 

    1. int x = 10;
    2. int y = 10;
    3. if (x == 10)
    4. if (y == 10)
    5. System.out.println("aaa");
    6. else
    7. System.out.println("bbb");
    8. //if~else语句中可以不加大括号。此时else是和最接近的if匹配.

    2、switch语句

    定义:

    • 先计算表达式的值
    • 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
    • 当表达式的值没有与所列项匹配时,执行default
    1. switch(表达式){
    2. case 常量值1:{
    3. 语句1;
    4. break;
    5. }
    6. case 常量值2:{
    7. 语句2;
    8. break;
    9. }
    10. default:{
    11. 语句3;
    12. break;
    13. }
    14. }

    例:

    1. int day = 4;
    2. switch(day) {
    3. case 1:
    4. System.out.println("星期一");
    5. break;
    6. case 2:
    7. System.out.println("星期二");
    8. break;
    9. case 3:
    10. System.out.println("星期三");
    11. break;
    12. case 4:
    13. System.out.println("星期四");
    14. break;
    15. case 5:
    16. System.out.println("星期五");
    17. break;
    18. case 6:
    19. System.out.println("星期六");
    20. break;
    21. case 7:
    22. System.out.println("星期日");
    23. break;
    24. default:
    25. System.out.println("输入有误");
    26. break;
    27. }
    28. //输出结果:星期四

    注:

    1、多个case后的常量值不可以重复

    2、switch的括号内的数据类型只能是byte、char、short、int、String常量串、枚举类型;long,double,float,boolean不能作为switch的参数

    例:

    1. double num = 1.0;
    2. switch(num) {
    3. case 1.0:
    4. System.out.println("hehe");
    5. break;
    6. case 2.0:
    7. System.out.println("haha");
    8. break;
    9. }
    10. // 编译出错
    11. Test.java:4: 错误: 不兼容的类型: 从double转换到int可能会有损失
    12. switch(num) {^1 个错误}

    3、不要遗漏break, 否则会失去 "多分支选择" 的效果

    例:

    1. int day = 1;
    2. switch(day) {
    3. case 1:
    4. System.out.println("星期一");
    5. // break;
    6. case 2:
    7. System.out.println("星期二");
    8. break;
    9. }
    10. //运行结果为:
    11. //星期一
    12. //星期二

    4、switch 不能表达复杂的条件

    三、循环结构

    1、for()循环

    定义:

    • 表达式1:用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次
    • 表达式2:循环条件,满则循环继续,否则循环结束
    • 表达式3:循环变量更新方式

    ①②③④--->②③④--->②③④--->②③④--->②③④--->②③④--->...--->②为false,循环结束。

    1. for(表达式①;布尔表达式②;表达式③){
    2. 表达式④;
    3. }

    例:

    1. int sum = 0;
    2. for (int i = 1; i <= 100; i++) {
    3. sum += i;
    4. }
    5. System.out.println("sum = " + sum);
    6. // 执行结果:5050

    注:
    1、for下面的语句可以不写 { } , 但是不写时只支持一条语句
    2、for后面不要写分号, 否则可能导致循环不能正确执行
    3、结束单趟循环用continue,结束整个循环用break

    2、break

    定义:break 的功能是让循环提前结束。

    当代码执行到 break时,进行条件判断如果成立就结束循环。

    例:

    1. int num = 100;
    2. while (num <= 200) {
    3. if (num % 3 == 0) {
    4. System.out.println("找到了3的倍数, 为:" + num);
    5. break;
    6. }
    7. num++;
    8. }
    9. // 执行结果找到了3的第一个倍数, 为:102

    3、continue

    定义:continue 的功能是跳过这次循环, 立即进入下次循环。

    当代码执行到 continue 语句的时候就会判定循环条件,如果成立就跳过本次循环, 从而不会执行到下方的打印语句.

    例:

    1. int num = 100;
    2. while (num <= 200) {
    3. if (num % 3 != 0) {
    4. num++; //这里的 "++" 不可以缺失! 否则会死循环.
    5. continue;
    6. }
    7. System.out.println("找到了3的倍数, 为:" + num);
    8. num++;
    9. }

    4、while()循环

    定义:循环条件为 true,则执行循环语句,否则结束循环。

    1. while(循环条件){
    2. 循环语句;
    3. }

    例:

    1. int num = 1;
    2. while (num <= 10) {
    3. System.out.print(num+" ");
    4. num++;
    5. }
    6. //结果为:1 2 3 4 5 6 7 8 9 10

    注:

    1、while 下面的语句可以不写 { } , 但此时只能支持一条语句。

    2、while 后面不要写分号, 否则可能导致循环不能正确执行.

    例:

    1. int num = 1;
    2. while (num <= 10); {
    3. System.out.println(num);
    4. num++;
    5. }
    6. // 执行结果:无任何输出, 程序死循环
    7. // 此时"; "为 while 的语句体(这是一个空语句), 实际的 { } 部分和循环无关。
    8. // 此时循环条件 num <= 10 恒成立, 代码死循环

    5、do~while()循环

    定义:先执行循环语句, 再判定循环条件,循环条件成立则继续执行,否则循环结束。

    1. do{
    2. 循环语句;
    3. }while(循环条件);

     例:

    1. int num = 1;
    2. do {
    3. System.out.println(num);
    4. num++;
    5. } while (num <= 10);

    注:
    1、do~while 循环最后的分号不要忘记
    2、一般 do while 很少用到, 更推荐使用 for 和 while

    四、输入输出

    1、输出到控制台

    1. System.out.println(msg); // 输出一个字符串, 带换行
    2. System.out.print(msg); // 输出一个字符串, 不带换行
    3. System.out.printf(format, msg); // 格式化输出
    • println 输出的内容自带 ” \n “ ,print 不带 ”\n“。
    • printf 的格式化输出方式和 C 语言的 printf 是基本一致的。

    例:

    1. System.out.println("hello world");
    2. //输出 hello world,结果自动换行
    3. System.out.print("hello world");
    4. //输出 hello world,结果不换行
    5. int x = 10;
    6. System.out.printf("x = %d\n", x);
    7. //输出 10,与C语言的printf类似

     2、从键盘输入

    定义:使用 Scanner 读取字符串/整数/浮点数

    1. import java.util.Scanner; //需要导入util包
    2. Scanner sc = new Scanner(System.in);
    3. System.out.println("请输入你的姓名:");
    4. String name = sc.nextLine();
    5. System.out.println("请输入你的年龄:");
    6. int age = sc.nextInt();
    7. System.out.println("请输入你的工资:");
    8. float salary = sc.nextFloat();
    9. System.out.println("你的信息如下:");
    10. System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
    11. sc.close(); // 注意, 要记得调用关闭方法
    12. //执行结果为:
    13. //请输入你的姓名:
    14. //张三
    15. //请输入你的年龄:
    16. //18
    17. //请输入你的工资:
    18. //1000
    19. //你的信息如下:
    20. //姓名: 张三
    21. //年龄:18
    22. //工资:1000.0

    注: 当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl+ d)。

  • 相关阅读:
    DEJA_VU3D - Cesium功能集 之 056-智图Arcgis地图纠偏
    BFV同态加密方案初步学习
    【Designing ML Systems】第 9 章 :生产中的持续学习和测试
    python免杀基础——三步(查杀、连接、代码)情况
    深度学习算法在工业视觉落地的思考
    sobel算子边缘提取及程序优化(C语言)
    etcd cli选举流程
    【论文翻译】变更数据捕获和实时数据仓库框架
    Leetcode(452)——用最少数量的箭引爆气球
    Linux系统常用命令总结-2022
  • 原文地址:https://blog.csdn.net/xh1605004242/article/details/127719242