Java流程控制语句
2026/7/20 17:39:35 网站建设 项目流程

1 控制台输入

获取用户在控制台输入的内容,使用引用数据类型Scanner

使用Scanner步骤:

  • 导包
  • 创建
  • 使用
// 声明当前类所在的包 package cn.javasm.demo; // 导包 import java.util.Scanner; public class TestDemo { public static void main(String[] args) { // 创建 // 类型 变量名 = new 类型(System.in); Scanner scanner = new Scanner(System.in); System.out.println("请输入一个整数:"); // 使用 // 获取int类型的数据 int a = scanner.nextInt(); System.out.println("用户输入的是" + a); // String是引用数据类型 表示字符串 // 获取用户输入的字符串 String str = scanner.next(); System.out.println(str); } }

2 流程控制语句

程序在执行过程中,各条语句的执行顺序对程序的结果是有直接的影响的。也就是说程序的流程对运行结果有直接的影响。所以我们必须要清楚每一条语句的执行流程。

分类:

  • 顺序结构
  • 选择结构
  • 循环结构

2.1 顺序结构

顺序结构就是代码从上到下执行。默认都是顺序结构。

public static void main(String[] args) { System.out.println("今天是6月6号"); System.out.println("明天就要高考了"); System.out.println("下星期穿少点,太热了"); }

2.2 选择结构

选择结构也叫分支结构,根据不同的条件执行不同的代码。

选择结构分为:

  • if语句
  • switch语句
2.2.1 if语句

if语句分为三种格式

2.2.1.1 if语句格式1

格式:

if (布尔表达式){ 语句体; }

执行流程:

  • 首先判断布尔表达式的结果是true还是false
  • 如果是true就执行语句体
  • 如果是false就不执行语句体,直接执行其他语句
public static void main(String[] args) { System.out.println("一天晚上闲的没事干,在大街游荡~"); System.out.println("发现一个网吧"); int age = 17; if (age >= 18){ System.out.println("掏身份证开机"); System.out.println("上号"); System.out.println("开始骂人"); System.out.println("挂机"); System.out.println("下机"); } System.out.println("回家睡觉"); }

注意:如果if语句中只有一行代码,可以省略大括号

流程图:

2.2.1.2 if语句格式2

格式:

if (布尔表达式){ 语句体1; }else{ 语句体2; }

执行流程:

  • 首先判断布尔表达式的结果是true还是false
  • 如果是true就执行语句体1
  • 如果是false就执行语句体2
public static void main(String[] args) { // 创建 Scanner scanner = new Scanner(System.in); System.out.println("请输入您的年龄:"); // 使用 int age = scanner.nextInt(); if (age >= 18){ System.out.println("成年人要为自己做的事负责"); }else { System.out.println("未成年人可以少负责"); } }

流程图

课堂练习: 输入一个整数,输出这个数是奇数还是偶数

public static void main(String[] args) { // 输入一个整数,输出这个数是奇数还是偶数 // alt + 回车 自动导包 Scanner scanner = new Scanner(System.in); System.out.println("请输入一个整数:"); int num = scanner.nextInt(); // 判断是奇数还是偶数 if (num % 2 == 0){ System.out.println(num + "是偶数"); }else { System.out.println(num + "是奇数"); } }
2.2.1.3 if语句格式3

格式:

if (布尔表达式1){ 语句体1; }else if(布尔表达式2){ 语句体2; }else if(布尔表达式3){ 语句体3; }else if(布尔表达式4){ 语句体4; } ... else if(布尔表达式n){ 语句体n; }else{ 语句体n + 1; }

执行流程:

  • 首先判断布尔表达式1的结果是true还是false
  • 如果是true就执行语句体1
  • 如果是false就继续判断布尔表达式2的结果是true还是false
  • 如果是true就执行语句体2
  • 如果是false就继续判断布尔表达式3的结果是true还是false
  • .....
  • 如果没有任何布尔表达式的结果是true,就执行语句体n + 1

流程图:

public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int age = scanner.nextInt(); if (age > 0 && age < 7){ System.out.println("婴幼儿"); }else if (age >= 7 && age < 12){ System.out.println("儿童"); }else if (age >= 12 && age < 18){ System.out.println("少年"); }else if (age >= 18 && age < 40){ System.out.println("青年"); }else if (age >= 40 && age < 60){ System.out.println("中年"); }else if (age >= 60 && age < 110){ System.out.println("老年"); }else { System.out.println("妖怪~"); } }

课堂练习:

x >= 10 y = 3x + 1

-2 < x < 10 y = 3x

x <= -2 y = 3x - 1

让用户输入x的值,计算出y的值并输出

public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个x的值"); int x = scanner.nextInt(); int y; if (x >= 10){ y = 3 * x + 1; }else if(x > -2 && x < 10){ y = 3 * x; }else { y = 3 * x - 1; } System.out.println("y的值是" + y); }

课堂练习:根据用户输入的月份,输出正确的季节

public static void main(String[] args) { // 根据用户输入的月份,输出正确的季节 Scanner scanner = new Scanner(System.in); System.out.println("请输入月份"); int month = scanner.nextInt(); if (month >= 3 && month <= 5){ System.out.println("春天去郊游"); }else if (month >= 6 && month <= 8){ System.out.println("夏天吃西瓜"); }else if (month >= 9 && month <= 11){ System.out.println("秋天吃柿子"); }else if (month == 12 || month == 1 || month == 2){ System.out.println("冬天烤红薯"); }else { System.out.println("您输入的月份不正确!"); } }
2.2.2 switch语句

格式:

switch (表达式){ case 目标值1: 语句体1; break; case 目标值2: 语句体2; break; ... case 目标值n: 语句体n; break default: 语句体n + 1; break; }

解释:

  • 表达式的取值类型可以是 byte short int char
  • JDK5之后可以是枚举
  • JDK7之后可以是字符串
  • case 后面是要和表达式进行比较的值
  • 语句体可以是一条语句,也可以是多条语句
  • break表示中断,可以立即结束switch语句
  • default语句表示所有的目标值都没有匹配时,执行default中的语句体

执行流程:

  • 首先计算表达式的值
  • 使用表达式的值依次和case的目标值进行比较,如果相同就执行对应的语句体。
  • 如果都不相同,就执行default语句
public static void main(String[] args) { // 根据用户输入的数字,显示正确的星期几 Scanner scanner = new Scanner(System.in); System.out.println("请输入数字"); int weekday = scanner.nextInt(); switch (weekday){ 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("请输入1-7的整数"); break; } }

流程图:

注意点:

  • default中的break如果在代码的最后,可以省略
  • switch语句中的顺序不影响最终的结果
  • case具有穿透效果。如果没有break的影响,会一直执行下去。

课堂练习:

根据用户输入的月份,输出正确的季节

public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入对应的月份"); int month = scanner.nextInt(); switch (month){ case 3: case 4: case 5: System.out.println("春天万物复苏"); break; case 6: case 7: case 8: System.out.println("夏天捉小龙虾"); break; case 9: case 10: case 11: System.out.println("秋天登高"); break; case 12: case 1: case 2: System.out.println("冬天打雪仗"); break; default: System.out.println("傻der~"); break; } }

2.3 循环结构

2.3.1 概述

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称之为循环体语句。当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false从而结束循环。

循环语句:

  • for循环
  • while循环
  • do-while循环
2.3.2 循环语句的组成
  • 循环变量初始化(初始化表达式):

一条或者多条语句,这些语句完成一些初始化操作

  • 循环出口(布尔表达式)

这是一个boolean表达式,这个表达式能决定是否要继续执行循环体

  • 循环语句(循环体)

这个部分是真正要多次执行的代码

  • 循环增量(步进表达式)

这个部门在一次循环体结束后,下一次循环判断条件执行前执行。通过控制循环条件变量,使得循环在合适的时候结束。

2.3.3 for循环结构

格式:

for (初始化表达式1;布尔表达式2;步进表达式4){ 循环体3; }

执行流程:

执行顺序: 1 2 3 4 2 3 4 ..... 2

如果布尔表达式的结果是true,那么就继续循环,如果结果是false,就结束循环

流程图:

public static void main(String[] args) { // // 打印100次HelloWorld // for (int i = 1;i <= 100;i++){ // System.out.println("HelloWorld" + i); // } // // // 打印10 - 1 // for (int i = 10;i >= 1;i--){ // System.out.println(i); // } // 求1-100之间的偶数和 // 代表和的变量 // int sum = 0; // for (int i = 1;i <= 100;i++){ // // 判断i是否是偶数 // if (i % 2 == 0){ // sum += i; // } // } // // shift + alt + 上下键 // System.out.println("和是" + sum); // 统计"水仙花数"的个数 // 水仙花数是一个三位数,其中个位的立方 + 十位的立方 + 百位的立方和 等于 这个三位数自身 // 153 3 * 3 * 3 + 5 * 5 * 5 + 1 * 1 * 1 = 153 // 水仙花数的个数 int count = 0; for (int i = 100;i < 1000;i++){ // 获取i的个位十位和百位 int ge = i % 10; int shi = i / 10 % 10; int bai = i / 100 % 10; if ((ge * ge * ge + shi * shi * shi + bai * bai * bai) == i){ count++; } } System.out.println("水仙花数有" + count + "个"); }
2.3.4 while循环结构

基本格式:

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

扩展格式:

初始化表达式1; while (布尔表达式2){ 循环体语句3; 步进表达式4; }

执行顺序: 1 2 3 4 2 3 4 ...2

流程图:

public static void main(String[] args) { // 输出100次HelloWorld // int i = 1; // while (i <= 100){ // System.out.println("HelloWorld"); // i++; // } // 求1-100之间的偶数和 // int sum = 0; // int i = 2; // while (i <= 100){ // sum += i; // // i += 2; // } // System.out.println("sum的值是" + sum); // 打印水仙花数 int i = 100; while (i < 1000){ int ge = i % 10; int shi = i / 10 % 10; int bai = i / 100; // 判断是否是水仙花数 if ((ge * ge * ge + shi * shi * shi + bai * bai * bai) == i) System.out.println("水仙花数是" + i); i++; } }
2.3.5 do-while循环结构

基本格式:

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

扩展格式:

初始化表达式1; do{ 循环体语句3; 步进表达式4; }while(布尔表达式2);

执行顺序:1 3 4 2 3 4 2 3 4 .....2

流程图:

public static void main(String[] args) { // // 打印100次HelloWorld // int i = 1; // do{ // System.out.println("HelloWorld"); // i++; // }while (i <= 100); // 求 1- 100之和 // int i = 1; // int sum = 0; // do{ // sum += i; // i++; // }while (i <= 100); // System.out.println("sum的值是" + sum); // 统计水仙花数有多少个 int i = 100; int count = 0; do{ // 获取个位十位和百位 int ge = i % 10; int shi = i / 10 % 10; int bai = i / 100; // 判断是否是水仙花数 if ((ge * ge * ge + shi * shi * shi + bai * bai * bai) == i) count++; i++; }while (i < 1000); System.out.println("水仙花数总共有" + count + "个"); }

三种循环的区别?

  • dowhile循环至少会执行一次循环语句
  • for循环结束后,控制条件语句的那个变量就已经被回收了。但是while和doWhile循环中的变量依然存在。
  • 使用推荐: for --> while -- > doWhile

注意:循环是可以嵌套的。

for (int i = 1;i <= 10;i++){ System.out.println("i = " + i); for (int j = 1;j <= 10;j++){ System.out.println("j = " + j); } }
2.3.6 跳转控制语句

让循环在某一步的时候结束或者跳过某些数据不要这些数据,Java提供了跳转控制语句来中断和跳转。

  • break 中断
    • 可以用在循环中
    • 也可以用在switch语句中
    • 表示立即结束循环或者结束switch语句
  • continue 继续
    • 只能用在循环中
    • 表示立即结束本次循环,开始下一次循环

无论是break还是continue,在多个循环嵌套中,只作用于当前循环

for (int i = 1;i <= 10;i++){ System.out.println("i = " + i); for (int j = 1;j <= 10;j++){ // 立即结束最近的循环 if (j == 2) break; System.out.println("j = " + j); } }
2.3.7 死循环

死循环又称之为永真循环,或者无限循环.就是循环的条件判断一直都是true,循环不会结束。

死循环标准写法: while(true){}

// 死循环 // while (true){ // int i = scanner.nextInt(); // System.out.println(i); // if (i == 10) break; // } // for (; true; ) { // } // for (;;){ // // } String str = null; while (!"y".equals(str)){ str = scanner.next(); System.out.println(str); }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询