【JavaSE】逻辑控制语句

简介: 顺序结构比较简单,即程序按照代码书写的顺序一行一行执行下去。

一. 顺序结构

顺序结构比较简单,即程序按照代码书写的顺序一行一行执行下去。


如果调整代码的书写顺序,则执行顺序也发生变化:

19ffff240ed9425eb321870cfa475b30.png

二. 分支结构

1. if 语句

if 语句的基本语法形式包括以下三种:


a37eb6d6f26d4f9998ca37a2c4441a45.png代码示例


1、判定一个数字是奇数还是偶数


public static void main(String[] args) {
    int num = 13;
    if (num % 2 == 0) {
        System.out.println("偶数");
    } else {
        System.out.println("奇数");
    }
}


2、判定一个整数是正数还是负数


public static void main(String[] args) {
    int num = -10;
    if (num > 0) {
        System.out.println("num 是正数");
    } else if (num < 0) {
        System.out.println("num 是负数");
    } else {
        System.out.println("num 是0");
    }
}


3、判定某一年份是否是闰年


public static void main(String[] args) {
    int year = 2023;
    if (year%4 == 0 && year%100 != 0 || year%400 == 0) {
        System.out.println("是闰年");
    } else {
        System.out.println("不是闰年");
    }
}


注意事项


1、悬垂 else 问题


if / else 语句中可以不加花括号,此时只能匹配一条语句

4d84719662884f5a955f79da7e051395.png


不加花括号时 else 总是和最近的 if 匹配

2a0b20f912a2461388a76cacbb87a6fb.png


2、代码风格问题

9ba78296d3a745509c9f56ead3d9dcf0.png


3、分号问题


此处多写了一个分号,导致分号成为了 if 语句的语句体,而 { } 中的代码已经成为了和一个 if 无关的代码块,此时不论 if 成立于否 { } 代码块里的代码都会执行:


int x = 20;
if (x == 10); {
  System.out.println("hehe");
}
// 运行结果
hehe


2. switch 语句

语法格式如下:


switch(整数|枚举|字符|字符串) {
  case 内容1: {
  内容满足时执行语句;
  [break;]
  }
  case 内容2: {
  内容满足时执行语句;
  [break;]
  }
  ...
  default: {
  内容都不满足时执行语句;
  [break;]
  }
}


几点说明


根据 switch 中值的不同,会执行对应的 case 语句。遇到 break 就会结束该 switch 语句。

如果 switch 中的值没有匹配的 case,就会执行 default 中的语句。

建议一个 switch 语句最好都要带上 default

注意 long、float、double 和 boolean 这几个基本类型的值不能做 switch 的参数。

代码示例


根据 day 的值输出星期几


int day = 3;
switch(day) {
    case 1: {
        System.out.println("星期一");
        break;
    }
    case 2: {
        System.out.println("星期二");
        break;
    }
    case 3: {
        System.out.println("星期三");
        break;
    }
    case 4: {
        System.out.println("星期四");
        break;
    }
    case 5: {
        System.out.println("星期五");
        break;
    }
    case 6: {
        System.out.println("星期六");
        break;
    }
    case 7: {
        System.out.println("星期日");
        break;
    }
    default: {
        System.out.println("输入有误");
        break;
    }
}


3、循环结构

3.1 while 循环

循环条件为 true,则执行循环语句,否则结束循环。语法格式如下:


while(布尔表达式){
  循环语句;
}

注意事项


和 if 类似,while 下面的语句可以不写 { } ,但是不写的时候只能匹配一条语句。建议还是加上 { }

和 if 类似,while 后面的 { 建议和 while 写在同一行

代码示例


1、打印 1 - 10 的数字


int num = 1;
while(num <= 10){
     System.out.println(num++);
}


2、计算 1 - 100 的和


int num = 1;
int sum = 0;
while(num <= 100){
    sum += num;
    num += 1;
}
System.out.println(sum);


3、计算 5 的阶乘


i

nt num = 1;
int ret = 1;
while(num <= 5){
    ret *= num;
    num += 1;
}
System.out.println(ret);

4、计算 1! + 2! + 3! + 4! + 5!


int num = 1;
int sum = 0;
// 外层循环求阶乘的和
while(num <= 5){
    // 那内层循环求每一个数的阶乘
    int tmp = 1;
    int fac = 1;
    while(tmp <= num){
        fac *= tmp;
        tmp += 1;
    }
    sum += fac;
    num += 1;
}
// 最后输出结果
System.out.println(sum);


3.2 do while 循环

语法格式如下,注意最后 while 后面要加个分号


do{
  循环语句;
}while(循环条件);

do while 不论条件成立与否,必定先执行一次循环语句,再判定循环条件:


10759668e64e4162b8c0e89ef777be12.png


3.3 for 循环

语法格式如下:


for(初始语句; 循环条件; 更新语句) {
  循环体;
}

相比于 while 循环,for 循环将初始语句、循环条件 和 更新语句合并在一起,这样写代码时不容易遗漏。


注意事项


和 if 类似,for 下面的语句可以不写 { } ,但是不写的时候只能支持一条语句。建议还是加上 { }。

和 if 类似,for 后面的 { 建议和 while 写在同一行。

建议有确定的循环次数时用 for;必须先执行一次循环体时用 do while;其他情况用 while。

代码示例


1、打印 1 - 10 的数字


for(int i = 0; i <= 10; ++i) {
    System.out.println(i);
}


2、计算 1 - 100 的和


int sum = 0;
for(int i = 0; i <= 100; ++i) {
    sum += i;
}
System.out.println(sum);


3、计算 5 的阶乘


int ret = 1;
for(int i = 1; i <= 5; ++i){
    ret *= i;
}
System.out.println(ret);


4、计算 1! + 2! + 3! + 4! + 5!


int sum = 0;
for(int i = 1; i <= 5; ++i){
    int fac = 1;
    for(int j = 1; j <= i; ++j){
        fac *= j;
    }
    sum += fac;
}
System.out.println(sum);


3.4 break 和 continue

break:执行此语句时,退出匹配最近的循环。


continue:执行此语句时,会立刻进入下次循环(判定循环条件)。


注意:break 和 continue 都必须用在循环中【特殊:beak 还可以用在 switch 中】,二者不适用于 if 语句。


三. 输入输出

1. 输出到控制台

Java 中常用输出语句有以下三种形式:


System.out.print(msg);  // 输出一个字符串, 不带换行
System.out.println(msg);// 输出一个字符串, 带换行
System.out.printf(format, msg);// 格式化输出

说明:


println 输出的内容自带 \n,print 不带 \n

printf 的格式化输出方式和 C 语言的 printf 是基本一致的

2. 从键盘输入

我们在做 OJ 时经常要用到从键盘输入 n 组数据,模板大致如下:


32bb9bb2cfc141b6a73b89ce83122683.png


注意事项


使用 Scanner 需要导入 util 包

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


相关文章
【JAVASE】顺序和选择结构 上
【JAVASE】顺序和选择结构
【JAVASE】顺序和选择结构 下
【JAVASE】顺序和选择结构
|
7月前
|
Java
Java的控制流程语句:深入理解条件语句、循环语句与跳转语句
Java的控制流程语句:深入理解条件语句、循环语句与跳转语句
77 1
|
4月前
|
Java 机器人 开发者
04 Java流程控制-循环(while+for+关键字+嵌套)
04 Java流程控制-循环(while+for+关键字+嵌套)
70 4
|
Java
Java的流程控制(选择结构语句 if ~ switch &循环结构语句dowhile ~ for)
程序执行的控制流程分为三种,也称为三种结构,分别是:顺序结构、和循环结构。 顺序结构指的是程序执行按照代码的编写顺序,依次从上往下开始执行,直到程序结束。程序的执行默认是顺序执行的
134 1
Java中的条件语句:if语句和switch语句的作用与区别
Java中的条件语句:if语句和switch语句的作用与区别
293 0
|
7月前
|
Java 测试技术 C语言
【JavaSE】逻辑控制:顺序、分支和循环结构
【JavaSE】逻辑控制:顺序、分支和循环结构
77 0
|
Java
举例说明Java中代码块的执行顺序
举例说明Java中代码块的执行顺序
82 0
|
Java
JavaSE --- 顺序、分支结构
JavaSE --- 顺序、分支结构
98 0
|
Java
Java中的while、do...while循环结构及跳转控制语句和循环嵌套
while、do...while循环结构及跳转控制语句和循环嵌套的简单示例
112 0