一、控制结构训练营
1. 条件语句if-else → 赛前资格审查
- 语法结构:
if (条件) {
// 满足条件时执行
} else {
// 不满足时执行
}
- 示例:判断年龄是否符合参赛资格(≥12岁且≤18岁)
- 嵌套if:
if (语文 >= 60) {
if (数学 >= 60) {
System.out.println("双科合格");
} else {
System.out.println("数学需加强");
}
} else {
System.out.println("语文基础薄弱");
}
```
**2. 循环结构 → 跳绳计数器**
- **for循环**:
```java
for (int i = 1; i <= 100; i++) {
System.out.println("跳第" + i + "次");
}
- 应用场景:统计跳绳次数、游泳耐力测试
- while循环:
int count = 0;
while (count < 500) {
count++;
System.out.println("已游" + count + "米");
}
- do-while循环:至少执行一次(如热身运动)
3. switch多分支 → 成绩等级评定
- 语法:
switch (成绩) {
case 100:
System.out.println("满分");
break;
case 90:
case 95:
System.out.println("优秀");
break;
default:
System.out.println("继续努力");
}
- 注意:需配合break防穿透,支持String类型(JDK1.7+)
二、数组与集合
1. 数组 → 固定大小的运动员成绩表
- 定义与初始化:
int[] scores = new int[5]; // 5个选手成绩
int[] scores = {10, 20, 30, 40, 50}; // 直接赋值
- 遍历方式:
for (int i = 0; i < scores.length; i++) {
System.out.println("选手" + (i+1) + "成绩:" + scores[i]);
}
- 特点:大小固定、访问快(O(1)),插入/删除慢(需移动元素)
2. ArrayList(动态数组) → 新增队员信息
- 优势:自动扩容、支持泛型
List names = new ArrayList<>();
names.add("张三"); // 添加元素
names.remove("李四"); // 删除元素
- 遍历:
for (String name : names) {
System.out.println(name);
}
- 对比数组:灵活但访问稍慢(O(n))
3. HashMap(键值对) → 记录选手项目与成绩
- 基本操作:
Map results = new HashMap<>();
results.put("跳远", 5.8); // 项目→成绩
System.out.println(results.get("跳远"));
- 遍历方式:
for (String event : results.keySet()) {
System.out.println(event + "成绩:" + results.get(event));
}
- 特点:键唯一、支持快速查找(哈希表实现)
三、输入输出实战
1. 标准输入输出 → 裁判登记成绩
- 输出到控制台:
System.out.println("请输入选手姓名:");
- 读取用户输入:
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine(); // 输入字符串
int score = scanner.nextInt(); // 输入整数
- 文件读写:
// 写入文件
FileWriter writer = new FileWriter("results.txt");
writer.write(name + ":" + score);
writer.close();
// 读取文件
FileReader reader = new FileReader("results.txt");
int data;
while ((data = reader.read()) != -1) {
System.out.print((char) data);
}
reader.close();
- 缓冲流提升效率:
BufferedReader reader = new BufferedReader(new FileReader("results.txt"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
2. 异常处理 → 防止数据错误
- try-catch-finally:
try {
int score = Integer.parseInt(input); // 可能抛出NumberFormatException
} catch (NumberFormatException e) {
System.out.println("请输入有效数字!");
} finally {
scanner.close();
}
- 自定义异常:
class InvalidScoreException extends Exception {
public InvalidScoreException(String message) {
super(message);
}
}
四、实战项目:班级运动会管理系统(部分功能)
1. 成绩录入模块
- 使用Scanner获取用户输入,存储到ArrayList或HashMap中
- 示例:
System.out.println("请输入选手姓名:");
String name = scanner.nextLine();
System.out.println("请输入项目(跳远/跑步):");
String event = scanner.nextLine();
System.out.println("请输入成绩:");
double score = scanner.nextDouble();
results.put(name, event, score); // 自定义方法存储数据
2. 成绩查询模块
- 根据姓名或项目查询成绩:
System.out.println("请输入查询条件(姓名/项目):");
String query = scanner.nextLine();
if (results.containsKey(query)) {
System.out.println(query + "成绩:" + results.get(query));
} else {
System.out.println("未找到记录");
}
3. 文件存储与读取
- 将成绩数据持久化到文件:
// 保存数据到文件
BufferedWriter writer = new BufferedWriter(new FileWriter("results.txt"));
for (String name : results.keySet()) {
writer.write(name + ":" + results.get(name));
writer.newLine();
}
writer.close();
- 从文件加载数据:
BufferedReader reader = new BufferedReader(new FileReader("results.txt"));
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(":");
results.put(parts[0], parts[1]);
}
reader.close();
教练寄语
编程如运动,需:
- 分解问题:将复杂任务拆解为小步骤(如先实现成绩录入,再添加查询功能)
- 调试工具:使用IDE的调试功能(如断点、变量观察)定位错误
- 代码规范:合理使用注释、保持代码整洁(如每个功能模块用空行分隔)
下期预告:下篇“综合竞技挑战”,学习函数方法、面向对象编程,打造完整的运动会管理系统! ♀?
本文暂时没有评论,来添加一个吧(●'◡'●)