Java SE程序逻辑控制与输入输出实战

拾光
拾光
发布时间:2026-10-16| 5人浏览过
原创

本文详解Java SE程序逻辑控制的核心语法,包括if、switch分支结构与while、for循环的执行机制,重点梳理格式规范与易错点。同时系统讲解System.out.printf的格式化输出技巧,以及利用Scanner类实现从控制台读取各类数据类型的方法,并附带完整的猜数字小游戏代码示例。

Java程序的执行流程

Java程序的默认执行方式是顺序结构,即严格按照代码书写的先后顺序,从上到下、一行接一行地执行。虽然这是最基础的模式,但实际业务中更多需要依据条件进行跳转,这就涉及到了分支与循环结构。

分支结构:让程序做出选择

分支结构允许程序根据布尔表达式的真假值来决定执行哪段代码。Java中主要使用 if 和 switch 关键字。

第1步:掌握 if-else 条件语句

目的:处理二选一或多选一的路径分叉。
入口/动作:使用 if (布尔表达式) { ... } 或配合 else if、else。

// 单分支
if(布尔表达式){
    // 条件为true时执行
}

// 双分支
if(布尔表达式){
    // 条件满足时执行
} else {
    // 条件不满足时执行
}

// 多分支
if(条件1){
    // 满足条件1
} else if(条件2){
    // 满足条件2
} else {
    // 以上都不满足
}
注意:if括号内的条件表达式必须是返回 boolean 类型的结果,不能像C/C++那样直接使用整数(0或1)表示真假。例如 if(a) 在Java中直接编译会报错。

悬垂else问题

当省略大括号 {} 时,else 始终匹配离它最近的未配对的 if。为了可读性,建议显式添加大括号。

int x = 10;
int y = 10;
if (x == 10) 
    if (y == 10)
        System.out.println("aaa");
else
    System.out.println("bbb"); // 这行else实际匹配的是内层if(y==10),而非外层

第2步:理解 switch-case 多路分支

参数:表达式可接收的数据类型仅限以下四种:
- 基本整数类型:byte, short, int
- 字符类型:char
- 字符串类型:String(Java 7+支持)
- 枚举类型(enum)

操作:定义一个开关,匹配不同的case值执行相应语句。通常每个case末尾需加 break; 以防止“穿透”现象。

switch(整数|枚举|字符|字符串){
    case 内容1 : {
        内容满足时执行语句;
        break; // 防止穿透
    }
    case 内容2 : {
        内容满足时执行语句;
        break;
    }
    ...
    default:{
        所有case都不满足时执行;
    }
}

循环结构:重复执行任务

Java中的循环语法与C语言高度相似,主要用于自动化重复性操作。

第3步:使用 while 和 for 循环

while 循环:
- 语法:while (布尔表达式) { ... }
- break:立即终止整个当前循环块。
- continue:跳过本次循环剩余的代码,直接进入下一次循环的条件判断。

for 循环:
- 语法:for(初始化表达式; 布尔判断条件; 更新表达式) { ... }
- 中间的判断条件必须为布尔值,一旦为false则退出循环。

第4步:理解 do-while 循环

特点:先执行循环体,再判断条件。无论条件是否成立,循环体至少执行一次。适用于“至少尝试一次”的场景。

控制台交互:输出与输入

第5步:格式化输出至控制台

除了基础的 println() 和 print(),推荐使用 printf 进行对齐和精度控制,体验类似于C语言的 printf。

System.out.println(msg);       // 自动换行输出
System.out.print(msg);         // 不换行输出
System.out.printf(format, msg); // 格式化输出

第6步:从键盘读取用户输入

Java本身不提供直接的键盘输入语句,需借助 java.util.Scanner 类。

操作步骤:
1. 导入包:在文件头部添加 import java.util.Scanner;。
2. 创建对象:将 System.in 标准输入流包装进 Scanner。
Scanner in = new Scanner(System.in);

常用方法:
- in.nextInt():读取下一个整型数据
- in.nextDouble():读取下一个浮点数
- in.nextBoolean():读取布尔值
- in.next():读取以空白符分隔的一个单词
- in.nextLine():读取一整行文本(包含空格)

⚠️ 关键避坑指南:
在处理混合输入时(例如先调用 nextInt() 后调用 nextLine()),由于缓冲区残留,nextLine() 可能会直接读入上一个输入留下的回车换行符,导致看似“跳过”了输入。
解决方案: 1. 将字符串输入放在数值输入之前;
2. 或者在两次阅读器之间插入一条 in.nextLine(); 来清空残留的回车符。

批量输入模式:
可以使用 while(in.hasNextInt()) 持续读取直到遇到结束信号(终端中通常为 Ctrl+D 或 Ctrl+Z)。

实战演练:猜数字游戏

通过综合应用上述语法,我们可以编写一个简单的猜数字程序。首先学习如何生成随机数。

生成随机数:
导入 java.util.Random,实例化对象后调用 .nextInt(n) 可以生成 [0, n) 范围内的随机整数。

Random random = new Random();
int rand = random.nextInt(100) + 1; // 生成1到100之间的随机整数

完整逻辑实现:结合 Scanner 输入、while(true) 循环以及 if-else 判断大小关系。

import java.util.Scanner;
import java.util.Random;

public class GuessNumberGame {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Random random = new Random();
        
        // 生成1到100的随机目标数字
        int target = random.nextInt(100) + 1;
        
        System.out.println("游戏开始!请输入1-100之间的整数:");
        
        while (true) {
            if (scanner.hasNextInt()) {
                int guess = scanner.nextInt();
                
                if (guess == target) {
                    System.out.println("恭喜你,猜对了!");
                    break; // 猜对则结束循环
                } else if (guess < target) {
                    System.out.println("很遗憾,你猜的数字小了!");
                } else {
                    System.out.println("很遗憾,你猜的数字大了!");
                }
            } else {
                System.out.println("输入无效,请输入一个整数。");
                scanner.next(); // 清除非法输入,防止死循环
            }
        }
    }
}

以上就是Java SE程序逻辑控制与输入输出功能的详细内容,更多关于Java基础语法的学习资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。