目录
7、逻辑控制
7.1 分支结构
7.1.1 if 语句
语法格式1
语法格式2
语法格式3
7.1.2 switch语句
基本语法
执行流程
7.2 循环结构
7.2.1 while循环
语法格式
7.2.2 Break
7.2.3 Continue
7.2.4 for循环
语法格式
执行过程
7.2.5 do while循环
语法格式
7.3 输入输出
7.3.1 输出到控制台
语法格式
7.3.2 从键输入(Scanner类)
1. 导入Scanner类
2. 创建Scanner对象
3. 读取不同类型的输入
7.4 文章结语
7、逻辑控制
引入:我们每一个人每天的生活似乎都是充满规律的,我们都在一定的顺序中做着每件事,而很多人也是日复一日的努力着。而对于程序而言,其实和人生一样的,在顺序中循环,伴随着一次次选择,我们不断成长,程序不断运行。
7.1 分支结构
7.1.1 if 语句
-
语法格式1
规则: 如果布尔表达式结果为true,执行if语句,否则不执行!
例子:
public class Main {
public static void main(String[] args) {
int salary = 100000000;
//如果工资大于等于10000000执行输出语句
if(salary >= 10000000 ){
System.out.println("买大别墅!");
}
}
}
-
语法格式2
规则:如果布尔表达式结果为true,则执行if中的语句,否则执行else语句。
例子:
public class Main {
public static void main(String[] args) {
int salary = 100000000;
//如果工资大于等于10000000执行输出语句
if(salary >= 10000000 ){
System.out.println("买大别墅!");
}else{
System.out.println("好好学习,挣大钱买大别墅!");
}
}
}
-
语法格式3
规则:如果表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3。
注意:
- 注意不要在if后的布尔表达式后增加分号!如果加了分号,就不会执行if后面的语句了。
- if/else语句中可以不加大括号,但也可以写语句(只能写一条)此时else是和最近的if匹配的。
7.1.2 switch语句
-
基本语法
执行流程
- 首先计算表达式的值。
- 再和case依次比较,一旦有响应的匹配就执行该case里面的语句,直到遇到break时结束。
- 当表达式的值没有能匹配到的case时,执行default。
注意:
- long float double boolean都不可以作为switch的参数。
- case后面的常量值不可以重复。
- 引用类型:String 常量串,枚举类型。
- switch不能表达复杂的条件。
例子:
public class Main {
public static void main(String[] args) {
int day = 3; // 定义一个变量
switch (day) {
case 1: {
// case 1 的代码块
System.out.println("今天是星期一");
break; // 跳出 switch 语句
}
case 2: {
// case 2 的代码块
System.out.println("今天是星期二");
break;
}
case 3: {
// case 3 的代码块
System.out.println("今天是星期三");
break;
}
default: {
// 默认代码块
System.out.println("今天不是星期一、二或三");
}
}
}
}
结果输出的语句是"今天是星期三"。
7.2 循环结构
7.2.1 while循环
-
语法格式
规则:循环条件为true,则执行循环条件语句,否则结束循环。
例子:计算1-100数字之和
public class Main {
public static void main(String[] args) {
int sum = 0; // 定义一个变量 sum,用于存储累加的结果
int i = 1; // 定义一个变量 i,初始值为1,表示从1开始累加
// 使用 while 循环,当 i 小于等于100时执行循环体
while (i <= 100) {
sum += i; // 将当前的 i 值累加到 sum 中
i++; // 将 i 的值加1,准备下一次循环
}
// 输出最终的结果
System.out.println("1到100的和是: " + sum);
}
}
7.2.2 Break
-
在循环中使用
break
:-
用于提前退出循环(如
for
、while
、do-while
)。 -
当满足某个条件时,可以使用
break
立即终止循环,不再执行循环中剩余的代码。
-
-
在
switch
语句中使用break
:-
用于结束
switch
语句的执行,防止“贯穿”现象。 -
如果没有
break
,switch
语句会继续执行后续的case
代码块。
-
例子:找到100-200中第一个3的倍数
public class Main {
public static void main(String[] args) {
//定义一个变量num表示从100开始寻找
int num = 100;
//使用while循环,表示i在100到200间执行循环体
while( num <= 200) {
//使用if语句,判断是否为三的倍数
if(num % 3 == 0) {
//如果这个数是三的倍数,则输出这个数
System.out.println("找到了三的倍数为"+num);
//找到了这个数,使用break终止循环
break;
}num++;//若if后的布尔表达式结果为false,则将num的值+1进入下一次循环。
}
}
}
7.2.3 Continue
- 功能:Continue的功能是跳过这次循环,立即进入下次循环。要注意,continue后面的内容不会被执行!
- 例子:找到100-200之间所有3的倍数
(代码中continue注释:即执行到continue语句的时候,就会立刻进入下次循环判定循环条件,从而不会执行到下方的打印语句)
public class Main {
public static void main(String[] args) {
//初始化一个num变量,表示从100开始寻找
int num = 100;
//使用while循环,当num属于100-200时执行循环体
while (num <= 200){
//每次循环将num的值加一,确保num的更新
num++;
//使用if语句判断num是否为三的倍数
if(num %3 != 0){
//如果num不是3的倍数,continue则跳过次循环,进入下一次循环
continue;
//如果num是3的倍数,输出这个数
}System.out.println("找到了3的倍数"+num);
}
}
}
7.2.4 for循环
-
语法格式
-
执行过程
- 计算表达式1的值。表达式1通常用于对循环变量赋初值,在循环最开始时执行,只会执行一次。
- 计算布尔表达式的值。布尔表达式2是循环条件,如果返回的值是true。就执行表达式4;如果返回的值是false,就结束整个for循环。
- 计算表达式3的值。表达式3的主要功能是改变循环变量的值进行更新,为执行下一次循环做准备。
- 再次执行步骤2和步骤3,直到步骤2中的逻辑表达式返回为false,就结束整个循环。
- 例子:输出1-100以内所有数字的和
public class Main {
public static void main(String[] args) {
//声名变量并赋初值
int sum = 0;
//使用for循环
for (int i = 0; i <= 100; i++) {
//这位表达式4,也是循环体,计算每次循环后的sum的值
sum = sum + i;
}
//如果i>100时,布尔表达式返回值为false,则结束循环,输出100以内的所有数字的和
System.out.println("100以内的所有的数字和是:"+ sum);
}
}
7.2.5 do while循环
-
语法格式
- 规则:先执行循环语句,再判定循环条件,循环条件成立则继续执行,否则循环结束。
- 例子:打印0-10数字
public class Main {
public static void main(String[] args) {
//初始化变量并赋初值
int num = 0;
do {
//输出num的值
System.out.println(num);
//更新变量的值
num++;
}while (num <= 10);//判断变量的值
}
}
7.3 输入输出
7.3.1 输出到控制台
-
语法格式
这三种是java中标准的的输出方式。
7.3.2 从键输入(Scanner类)
Scanner
类是Java中用于读取用户输入的一个工具类,它位于java.util
包中。Scanner
类可以读取从键盘、文件、字符串等多种输入源的数据。下面博主从基础开始讲解Scanner
类的使用,并结合代码示例进行说明。
1. 导入Scanner
类
在使用Scanner
类之前,需要先导入它。
import java.util.Scanner;
2. 创建Scanner
对象
要使用Scanner
类读取输入,首先需要创建一个Scanner
对象。通常我们会从标准输入(键盘)读取数据:
Scanner scanner = new Scanner(System.in);
这里的System.in
表示标准输入流(通常是键盘输入)。
3. 读取不同类型的输入
Scanner
类提供了多种方法来读取不同类型的输入数据,例如:
next()
:读取下一个字符串(以空格或换行符分隔)。
nextInt()
:读取下一个整数。
nextDouble()
:读取下一个双精度浮点数。
nextLine()
:读取下一行文本(直到换行符)。
例子:
下面是一个简单的代码示例,展示了如何使用Scanner
类读取不同类型的输入:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//创建Scanner对象
Scanner scanner = new Scanner(System.in);
//提示输入用户姓名
System.out.println("请输入您的姓名:");
String name = scanner.next();//读取字符串
System.out.println("您好!" + name + "!");
//提示用户输入年龄
System.out.println("请输入您的年龄:");
int age = scanner.nextInt();//读取整数
System.out.println("您的年龄是:" + age +"!");
//提示用户输入身高
System.out.println("请输入您的身高:");
double height = scanner.nextDouble();//读取双精度浮点数
System.out.println("您的身高是:" + height +"!");
// 提示用户输入一句话
System.out.print("请输入一句话: ");
scanner.nextLine(); // 清除缓冲区
String sentence = scanner.nextLine(); // 读取一行文本
System.out.println("您输入的话是: " + sentence);
// 关闭Scanner对象
scanner.close();
}
}
这段代码运行结果示例:
博主对其中一些进行再详细点的解释:
scanner.next()
:读取用户输入的字符串,直到遇到空格或换行符为止。
scanner.nextInt()
:读取用户输入的整数。
scanner.nextDouble()
:读取用户输入的双精度浮点数。
scanner.nextLine()
:读取用户输入的一行文本,直到遇到换行符为止。需要注意的是,在读取完nextInt()
或nextDouble()
后,缓冲区中可能会留下一个换行符,因此在使用nextLine()
之前,通常需要先调用一次nextLine()
来清除缓冲区。
7.4 文章结语
Java的逻辑控制是程序设计的核心骨架,分支结构与循环结构共同构建了代码的动态行为:
-
分支结构(
if
、switch
)通过条件判断实现逻辑分流,让程序在不同场景下精准响应。 -
循环结构(
while
、for
、do-while
)通过重复执行代码块提升效率,然后用break
和continue可以
进一步细化流程控制。 -
输入输出
System.out
实现信息展示,Scanner
类则提供更加便捷的输入和输出。
希望这篇博客能对友友们有帮助,也希望和大家一起学习进步!
制作不易,感谢友友们的点赞收藏关注,如有问题欢迎批评指正,祝友友们生活愉快,学习工作顺顺利利!