课程内容:多维数组、增强 for 循环(foreach)、Arrays 数组工具类、冒泡排序、选择排序、插入排序、Scanner 键盘输入
提交方式:在提交\姓名\目录下创建对应的 Java 源文件
截止时间:下次上课前
难度:⭐⭐⭐
知识点:冒泡排序、嵌套循环、数组遍历、变量交换
定义整数数组 {29, 10, 14, 37, 13, 33, 48, 22},使用冒泡排序算法将数组按升序(从小到大)排列。
要求:
for 循环嵌套实现Arrays.toString() 输出结果示例输出:
排序前:[29, 10, 14, 37, 13, 33, 48, 22]
排序后:[10, 13, 14, 22, 29, 33, 37, 48]
示例代码框架:
import java.util.Arrays;
/**
* @author 你的姓名
* @title 题目1:冒泡排序
* @create 2026/7/16
*/
public class Demo_01_姓名 {
public static void main(String[] args) {
int[] arr = {29, 10, 14, 37, 13, 33, 48, 22};
System.out.println("排序前:" + Arrays.toString(arr));
// 冒泡排序代码写在这里
System.out.println("排序后:" + Arrays.toString(arr));
}
}
💡 提示:
- 外层循环控制冒泡轮数,共
arr.length - 1轮- 内层循环在
[0, arr.length-1-i]区间相邻比较- 前一个比后一个大就交换
难度:⭐⭐⭐
知识点:选择排序、嵌套循环、数组遍历
定义整数数组 {56, 23, 89, 12, 45, 67, 34, 78},使用选择排序算法将数组按降序(从大到小)排列。
要求:
for 循环遍历输出(不要用 Arrays.toString())示例输出:
排序前:56 23 89 12 45 67 34 78
排序后:89 78 67 56 45 34 23 12
示例代码框架:
import java.util.Arrays;
/**
* @author 你的姓名
* @title 题目2:选择排序(降序)
* @create 2026/7/16
*/
public class Demo_02_姓名 {
public static void main(String[] args) {
int[] arr = {56, 23, 89, 12, 45, 67, 34, 78};
System.out.print("排序前:");
// 用 for 循环遍历输出
// 选择排序代码写在这里(降序)
System.out.print("排序后:");
// 用 for 循环遍历输出
}
}
💡 提示:
- 降序排列:每轮从剩余未排序元素中选出最大值,放到未排序部分的第 1 位
- 回忆课堂代码中的选择排序是升序(找最小值),降序只需要改成找最大值即可
minIndex改名为maxIndex,比较条件从<改为>
难度:⭐⭐⭐
知识点:插入排序、数组遍历、字符串拼接
有一个整数数组 {88, 72, 93, 65, 81, 97, 78, 85} 表示 8 名学生的考试成绩。使用插入排序算法将成绩按升序(从低分到高分)排列。
要求:
示例输出:
第1轮插入后:[72, 88, 93, 65, 81, 97, 78, 85]
第2轮插入后:[72, 88, 93, 65, 81, 97, 78, 85]
第3轮插入后:[65, 72, 88, 93, 81, 97, 78, 85]
第4轮插入后:[65, 72, 81, 88, 93, 97, 78, 85]
第5轮插入后:[65, 72, 81, 88, 93, 97, 78, 85]
第6轮插入后:[65, 72, 78, 81, 88, 93, 97, 85]
第7轮插入后:[65, 72, 78, 81, 85, 88, 93, 97]
排序完成!
最低分:65
最高分:97
示例代码框架:
import java.util.Arrays;
/**
* @author 你的姓名
* @title 题目3:插入排序-成绩排名
* @create 2026/7/16
*/
public class Demo_03_姓名 {
public static void main(String[] args) {
int[] scores = {88, 72, 93, 65, 81, 97, 78, 85};
System.out.println("原始成绩:" + Arrays.toString(scores));
// 插入排序代码写在这里
// 每轮插入后输出:System.out.println("第" + i + "轮插入后:" + Arrays.toString(scores));
System.out.println("排序完成!");
// 输出最低分和最高分
}
}
💡 提示:
- 插入排序将数组分为"已排序"和"未排序"两部分
- 从索引
1开始,每次取未排序的第 1 个元素插入到已排序部分的正确位置- 内层使用
while循环从后往前扫描,比当前元素大的就后移
难度:⭐⭐⭐⭐
知识点:Scanner 键盘输入、数据类型、字符串拼接、条件判断
使用 Scanner 实现一个学生信息采集系统,要求用户输入以下信息:
| 信息项 | 数据类型 | 提示语 |
|---|---|---|
| 姓名 | String | 请输入您的姓名: |
| 学号 | String | 请输入您的学号: |
| 年龄 | int | 请输入您的年龄: |
| 性别 | String | 请输入您的性别(男/女): |
| 身高(米) | double | 请输入您的身高(米): |
| 体重(公斤) | double | 请输入您的体重(公斤): |
| 是否在校(true/false) | boolean | 请输入您是否在校(true/false): |
要求:
Scanner 依次读取上述所有信息BMI = 体重 ÷ (身高 × 身高)BMI < 18.5 → 偏瘦18.5 ≤ BMI < 24 → 正常24 ≤ BMI < 28 → 偏胖BMI ≥ 28 → 肥胖nextInt() / nextDouble() 与 nextLine() 混用时的换行符陷阱示例输出:
======== 学生信息采集系统 ========
请输入您的姓名:张三
请输入您的学号:2024001
请输入您的年龄:20
请输入您的性别(男/女):男
请输入您的身高(米):1.75
请输入您的体重(公斤):70
请输入您是否在校(true/false):true
======== 学生信息卡 ========
姓名:张三
学号:2024001
年龄:20
性别:男
身高:1.75 米
体重:70.0 公斤
在校学生:true
BMI:22.86
体型判定:正常
============================
💡 提示:
- BMI 计算公式:
weight / (height * height)- BMI 结果保留两位小数可以使用:
System.out.printf("%.2f", bmi);- 或者使用
String.format("%.2f", bmi)格式化字符串- 也可以直接用
Math.round(bmi * 100) / 100.0实现四舍五入保留两位小数- 使用
if-else if多分支判断 BMI 所属区间
进阶挑战(学有余力的同学尝试):
switch 增强表达式(箭头语法)实现提交 文件夹下创建【以你名字命名】的文件夹,然后复制 Java 源文件Demo_题目编号_姓名.java
Demo_01_张三.java文件头部使用文档注释,包含:
/**
* @author 你的姓名
* @title 题目X:题目名称
* @create 2026/7/16
*/
代码整洁,有必要的注释
基础题(1~3)为必做
进阶题(4)为选做,鼓励所有同学尝试完成