Java SE程序逻辑控制与输入输出实战
本文详解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 {
// 以上都不满足
}
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基础语法的学习资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













