10 基础阶段综合实战 更新于 2026年5月 | ✍️ 原创文章转载请注明出处1. 猜数字游戏1.1 游戏规则程序随机生成 1-100 的数字用户反复猜测程序提示大了或小了猜对后显示猜测次数1.2 完整代码importjava.util.Random;importjava.util.Scanner;publicclassGuessNumber{publicstaticvoidmain(String[]args){RandomrandomnewRandom();inttargetrandom.nextInt(100)1;// 1-100ScannerscannernewScanner(System.in);intcount0;System.out.println( 猜数字游戏范围 1-100);while(true){System.out.print(请输入你的猜测: );intguessscanner.nextInt();count;if(guesstarget){System.out.println( 恭喜你猜对了答案就是 target);System.out.println(你一共猜了 count 次);break;}elseif(guesstarget){System.out.println( 大了再试试);}else{System.out.println( 小了再试试);}}scanner.close();}}1.3 代码解析知识点说明Random生成随机数nextInt(100)生成 0-99Scanner接收用户输入while(true)无限循环直到猜对才breakif-else多条件判断1.4 进阶二分查找策略// 最优策略每次取中间值// 第1次猜50第2次猜25或75...// 最多只需7次就能猜出1-100的任意数字// log₂(100) ≈ 6.64向上取整 72. 简易计算器2.1 功能说明支持加减乘除四则运算输入两个数和运算符输出结果。2.2 完整代码importjava.util.Scanner;publicclassSimpleCalculator{publicstaticvoidmain(String[]args){ScannerscannernewScanner(System.in);System.out.println( 简易计算器);System.out.print(请输入第一个数: );doublenum1scanner.nextDouble();System.out.print(请输入运算符 (, -, *, /): );charoperatorscanner.next().charAt(0);System.out.print(请输入第二个数: );doublenum2scanner.nextDouble();doubleresult;booleanvalidtrue;switch(operator){case:resultnum1num2;break;case-:resultnum1-num2;break;case*:resultnum1*num2;break;case/:if(num2!0){resultnum1/num2;}else{System.out.println(❌ 错误除数不能为0);validfalse;result0;}break;default:System.out.println(❌ 无效的运算符);validfalse;result0;}if(valid){System.out.println(✅ 结果: num1 operator num2 result);}scanner.close();}}2.3 知识点总结知识点应用switch运算符分支判断double支持小数运算charAt(0)获取字符串第一个字符除零检查边界条件处理3. 冒泡排序3.1 算法原理冒泡排序通过相邻元素比较交换每轮将最大的元素冒泡到末尾。3.2 图解过程原始数组: [5, 3, 8, 1, 2] 第1轮: 比较相邻元素大的往后交换 [5, 3, 8, 1, 2] → [3, 5, 8, 1, 2] (53, 交换) [3, 5, 8, 1, 2] → [3, 5, 8, 1, 2] (58, 不换) [3, 5, 8, 1, 2] → [3, 5, 1, 8, 2] (81, 交换) [3, 5, 1, 8, 2] → [3, 5, 1, 2, 8] (82, 交换) 结果: [3, 5, 1, 2, 8] ✅ 8已就位 第2轮: [3, 5, 1, 2, 8] → [3, 5, 1, 2, 8] [3, 5, 1, 2, 8] → [3, 1, 5, 2, 8] [3, 1, 5, 2, 8] → [3, 1, 2, 5, 8] 结果: [3, 1, 2, 5, 8] ✅ 5已就位 ...依此类推3.3 代码实现publicclassBubbleSort{publicstaticvoidmain(String[]args){int[]arr{5,3,8,1,2};System.out.println(排序前: arrayToString(arr));// 冒泡排序for(inti0;iarr.length-1;i){booleanswappedfalse;// 优化如果没交换说明已有序for(intj0;jarr.length-1-i;j){if(arr[j]arr[j1]){// 交换inttemparr[j];arr[j]arr[j1];arr[j1]temp;swappedtrue;}}System.out.println(第(i1)轮: arrayToString(arr));if(!swapped){System.out.println(已有序提前结束);break;}}System.out.println(排序后: arrayToString(arr));}privatestaticStringarrayToString(int[]arr){StringBuildersbnewStringBuilder([);for(inti0;iarr.length;i){sb.append(arr[i]);if(iarr.length-1)sb.append(, );}sb.append(]);returnsb.toString();}}3.4 复杂度分析指标值最好时间O(n) — 已有序只需一轮最坏时间O(n²) — 完全逆序平均时间O(n²)空间复杂度O(1) — 原地排序稳定性✅ 稳定4. 学生成绩管理4.1 功能需求录入学生成绩计算平均分、最高分、最低分统计各分数段人数查找指定学生4.2 完整代码importjava.util.Scanner;publicclassStudentScoreManager{// 最大支持学生数staticfinalintMAX_STUDENTS50;staticString[]namesnewString[MAX_STUDENTS];staticdouble[]scoresnewdouble[MAX_STUDENTS];staticintstudentCount0;publicstaticvoidmain(String[]args){ScannerscannernewScanner(System.in);while(true){System.out.println(\n 学生成绩管理系统 );System.out.println(1. 录入成绩);System.out.println(2. 显示所有成绩);System.out.println(3. 统计分析);System.out.println(4. 查找学生);System.out.println(0. 退出);System.out.print(请选择功能: );intchoicescanner.nextInt();scanner.nextLine();// 消耗换行符switch(choice){case1:inputScore(scanner);break;case2:showAllScores();break;case3:analyzeScores();break;case4:findStudent(scanner);break;case0:System.out.println( 再见);scanner.close();return;default:System.out.println(❌ 无效选择);}}}// 录入成绩staticvoidinputScore(Scannerscanner){if(studentCountMAX_STUDENTS){System.out.println(❌ 已达最大人数限制);return;}System.out.print(请输入学生姓名: );Stringnamescanner.nextLine();System.out.print(请输入成绩 (0-100): );doublescorescanner.nextDouble();if(score0||score100){System.out.println(❌ 成绩范围错误);return;}names[studentCount]name;scores[studentCount]score;studentCount;System.out.println(✅ 录入成功当前共 studentCount 名学生);}// 显示所有成绩staticvoidshowAllScores(){if(studentCount0){System.out.println( 暂无数据);return;}System.out.println(\n姓名\t\t成绩\t等级);System.out.println(-.repeat(30));for(inti0;istudentCount;i){StringgradegetGrade(scores[i]);System.out.printf(%-10s\t%.1f\t%s%n,names[i],scores[i],grade);}}// 统计分析staticvoidanalyzeScores(){if(studentCount0){System.out.println( 暂无数据);return;}doublesum0,maxscores[0],minscores[0];int[]gradeCountnewint[5];// 优秀、良好、中等、及格、不及格for(inti0;istudentCount;i){sumscores[i];if(scores[i]max)maxscores[i];if(scores[i]min)minscores[i];if(scores[i]90)gradeCount[0];elseif(scores[i]80)gradeCount[1];elseif(scores[i]70)gradeCount[2];elseif(scores[i]60)gradeCount[3];elsegradeCount[4];}doubleavgsum/studentCount;System.out.println(\n 统计结果);System.out.println(-.repeat(30));System.out.printf(学生人数: %d%n,studentCount);System.out.printf(平均分: %.2f%n,avg);System.out.printf(最高分: %.1f%n,max);System.out.printf(最低分: %.1f%n,min);System.out.println(\n分数段统计:);System.out.printf( 优秀 (90-100): %d 人%n,gradeCount[0]);System.out.printf( 良好 (80-89): %d 人%n,gradeCount[1]);System.out.printf( 中等 (70-79): %d 人%n,gradeCount[2]);System.out.printf( 及格 (60-69): %d 人%n,gradeCount[3]);System.out.printf( 不及格 (60): %d 人%n,gradeCount[4]);}// 查找学生staticvoidfindStudent(Scannerscanner){System.out.print(请输入要查找的姓名: );Stringnamescanner.nextLine();booleanfoundfalse;for(inti0;istudentCount;i){if(names[i].equals(name)){System.out.printf(✅ 找到: %s, 成绩: %.1f, 等级: %s%n,name,scores[i],getGrade(scores[i]));foundtrue;break;}}if(!found){System.out.println(❌ 未找到该学生);}}// 获取等级staticStringgetGrade(doublescore){if(score90)return优秀 ⭐;if(score80)return良好 ;if(score70)return中等 ;if(score60)return及格 ✅;return不及格 ❌;}}4.3 综合知识点知识点在本案例中的应用数组存储姓名和成绩方法功能模块化录入、显示、统计、查找循环遍历数组、菜单循环条件判断分数段统计、等级判断Scanner用户输入switch菜单选择static静态变量共享数据5. 知识点回顾通过本篇实战我们综合运用了以下知识点序号知识点对应案例1变量与数据类型所有案例2运算符计算器、统计3条件判断 (if/switch)所有案例4循环 (for/while)所有案例5数组排序、成绩管理6方法成绩管理系统7String 操作姓名处理8Scanner 输入所有交互式案例6. 总结本篇通过4个实战案例将前面学习的基础知识融会贯通猜数字游戏— 循环 条件判断 随机数简易计算器— switch 运算符 输入处理冒泡排序— 双重循环 数组操作 算法思维成绩管理系统— 综合运用所有基础知识 你能基于这些案例做哪些扩展比如计算器支持更多运算排序支持降序成绩系统支持删除 下一篇我们将进入面向对象编程的世界敬请期待 参考资料Java 官方文档 - Language Basics菜鸟教程 - Java 基础语法
10 基础阶段综合实战
10 基础阶段综合实战 更新于 2026年5月 | ✍️ 原创文章转载请注明出处1. 猜数字游戏1.1 游戏规则程序随机生成 1-100 的数字用户反复猜测程序提示大了或小了猜对后显示猜测次数1.2 完整代码importjava.util.Random;importjava.util.Scanner;publicclassGuessNumber{publicstaticvoidmain(String[]args){RandomrandomnewRandom();inttargetrandom.nextInt(100)1;// 1-100ScannerscannernewScanner(System.in);intcount0;System.out.println( 猜数字游戏范围 1-100);while(true){System.out.print(请输入你的猜测: );intguessscanner.nextInt();count;if(guesstarget){System.out.println( 恭喜你猜对了答案就是 target);System.out.println(你一共猜了 count 次);break;}elseif(guesstarget){System.out.println( 大了再试试);}else{System.out.println( 小了再试试);}}scanner.close();}}1.3 代码解析知识点说明Random生成随机数nextInt(100)生成 0-99Scanner接收用户输入while(true)无限循环直到猜对才breakif-else多条件判断1.4 进阶二分查找策略// 最优策略每次取中间值// 第1次猜50第2次猜25或75...// 最多只需7次就能猜出1-100的任意数字// log₂(100) ≈ 6.64向上取整 72. 简易计算器2.1 功能说明支持加减乘除四则运算输入两个数和运算符输出结果。2.2 完整代码importjava.util.Scanner;publicclassSimpleCalculator{publicstaticvoidmain(String[]args){ScannerscannernewScanner(System.in);System.out.println( 简易计算器);System.out.print(请输入第一个数: );doublenum1scanner.nextDouble();System.out.print(请输入运算符 (, -, *, /): );charoperatorscanner.next().charAt(0);System.out.print(请输入第二个数: );doublenum2scanner.nextDouble();doubleresult;booleanvalidtrue;switch(operator){case:resultnum1num2;break;case-:resultnum1-num2;break;case*:resultnum1*num2;break;case/:if(num2!0){resultnum1/num2;}else{System.out.println(❌ 错误除数不能为0);validfalse;result0;}break;default:System.out.println(❌ 无效的运算符);validfalse;result0;}if(valid){System.out.println(✅ 结果: num1 operator num2 result);}scanner.close();}}2.3 知识点总结知识点应用switch运算符分支判断double支持小数运算charAt(0)获取字符串第一个字符除零检查边界条件处理3. 冒泡排序3.1 算法原理冒泡排序通过相邻元素比较交换每轮将最大的元素冒泡到末尾。3.2 图解过程原始数组: [5, 3, 8, 1, 2] 第1轮: 比较相邻元素大的往后交换 [5, 3, 8, 1, 2] → [3, 5, 8, 1, 2] (53, 交换) [3, 5, 8, 1, 2] → [3, 5, 8, 1, 2] (58, 不换) [3, 5, 8, 1, 2] → [3, 5, 1, 8, 2] (81, 交换) [3, 5, 1, 8, 2] → [3, 5, 1, 2, 8] (82, 交换) 结果: [3, 5, 1, 2, 8] ✅ 8已就位 第2轮: [3, 5, 1, 2, 8] → [3, 5, 1, 2, 8] [3, 5, 1, 2, 8] → [3, 1, 5, 2, 8] [3, 1, 5, 2, 8] → [3, 1, 2, 5, 8] 结果: [3, 1, 2, 5, 8] ✅ 5已就位 ...依此类推3.3 代码实现publicclassBubbleSort{publicstaticvoidmain(String[]args){int[]arr{5,3,8,1,2};System.out.println(排序前: arrayToString(arr));// 冒泡排序for(inti0;iarr.length-1;i){booleanswappedfalse;// 优化如果没交换说明已有序for(intj0;jarr.length-1-i;j){if(arr[j]arr[j1]){// 交换inttemparr[j];arr[j]arr[j1];arr[j1]temp;swappedtrue;}}System.out.println(第(i1)轮: arrayToString(arr));if(!swapped){System.out.println(已有序提前结束);break;}}System.out.println(排序后: arrayToString(arr));}privatestaticStringarrayToString(int[]arr){StringBuildersbnewStringBuilder([);for(inti0;iarr.length;i){sb.append(arr[i]);if(iarr.length-1)sb.append(, );}sb.append(]);returnsb.toString();}}3.4 复杂度分析指标值最好时间O(n) — 已有序只需一轮最坏时间O(n²) — 完全逆序平均时间O(n²)空间复杂度O(1) — 原地排序稳定性✅ 稳定4. 学生成绩管理4.1 功能需求录入学生成绩计算平均分、最高分、最低分统计各分数段人数查找指定学生4.2 完整代码importjava.util.Scanner;publicclassStudentScoreManager{// 最大支持学生数staticfinalintMAX_STUDENTS50;staticString[]namesnewString[MAX_STUDENTS];staticdouble[]scoresnewdouble[MAX_STUDENTS];staticintstudentCount0;publicstaticvoidmain(String[]args){ScannerscannernewScanner(System.in);while(true){System.out.println(\n 学生成绩管理系统 );System.out.println(1. 录入成绩);System.out.println(2. 显示所有成绩);System.out.println(3. 统计分析);System.out.println(4. 查找学生);System.out.println(0. 退出);System.out.print(请选择功能: );intchoicescanner.nextInt();scanner.nextLine();// 消耗换行符switch(choice){case1:inputScore(scanner);break;case2:showAllScores();break;case3:analyzeScores();break;case4:findStudent(scanner);break;case0:System.out.println( 再见);scanner.close();return;default:System.out.println(❌ 无效选择);}}}// 录入成绩staticvoidinputScore(Scannerscanner){if(studentCountMAX_STUDENTS){System.out.println(❌ 已达最大人数限制);return;}System.out.print(请输入学生姓名: );Stringnamescanner.nextLine();System.out.print(请输入成绩 (0-100): );doublescorescanner.nextDouble();if(score0||score100){System.out.println(❌ 成绩范围错误);return;}names[studentCount]name;scores[studentCount]score;studentCount;System.out.println(✅ 录入成功当前共 studentCount 名学生);}// 显示所有成绩staticvoidshowAllScores(){if(studentCount0){System.out.println( 暂无数据);return;}System.out.println(\n姓名\t\t成绩\t等级);System.out.println(-.repeat(30));for(inti0;istudentCount;i){StringgradegetGrade(scores[i]);System.out.printf(%-10s\t%.1f\t%s%n,names[i],scores[i],grade);}}// 统计分析staticvoidanalyzeScores(){if(studentCount0){System.out.println( 暂无数据);return;}doublesum0,maxscores[0],minscores[0];int[]gradeCountnewint[5];// 优秀、良好、中等、及格、不及格for(inti0;istudentCount;i){sumscores[i];if(scores[i]max)maxscores[i];if(scores[i]min)minscores[i];if(scores[i]90)gradeCount[0];elseif(scores[i]80)gradeCount[1];elseif(scores[i]70)gradeCount[2];elseif(scores[i]60)gradeCount[3];elsegradeCount[4];}doubleavgsum/studentCount;System.out.println(\n 统计结果);System.out.println(-.repeat(30));System.out.printf(学生人数: %d%n,studentCount);System.out.printf(平均分: %.2f%n,avg);System.out.printf(最高分: %.1f%n,max);System.out.printf(最低分: %.1f%n,min);System.out.println(\n分数段统计:);System.out.printf( 优秀 (90-100): %d 人%n,gradeCount[0]);System.out.printf( 良好 (80-89): %d 人%n,gradeCount[1]);System.out.printf( 中等 (70-79): %d 人%n,gradeCount[2]);System.out.printf( 及格 (60-69): %d 人%n,gradeCount[3]);System.out.printf( 不及格 (60): %d 人%n,gradeCount[4]);}// 查找学生staticvoidfindStudent(Scannerscanner){System.out.print(请输入要查找的姓名: );Stringnamescanner.nextLine();booleanfoundfalse;for(inti0;istudentCount;i){if(names[i].equals(name)){System.out.printf(✅ 找到: %s, 成绩: %.1f, 等级: %s%n,name,scores[i],getGrade(scores[i]));foundtrue;break;}}if(!found){System.out.println(❌ 未找到该学生);}}// 获取等级staticStringgetGrade(doublescore){if(score90)return优秀 ⭐;if(score80)return良好 ;if(score70)return中等 ;if(score60)return及格 ✅;return不及格 ❌;}}4.3 综合知识点知识点在本案例中的应用数组存储姓名和成绩方法功能模块化录入、显示、统计、查找循环遍历数组、菜单循环条件判断分数段统计、等级判断Scanner用户输入switch菜单选择static静态变量共享数据5. 知识点回顾通过本篇实战我们综合运用了以下知识点序号知识点对应案例1变量与数据类型所有案例2运算符计算器、统计3条件判断 (if/switch)所有案例4循环 (for/while)所有案例5数组排序、成绩管理6方法成绩管理系统7String 操作姓名处理8Scanner 输入所有交互式案例6. 总结本篇通过4个实战案例将前面学习的基础知识融会贯通猜数字游戏— 循环 条件判断 随机数简易计算器— switch 运算符 输入处理冒泡排序— 双重循环 数组操作 算法思维成绩管理系统— 综合运用所有基础知识 你能基于这些案例做哪些扩展比如计算器支持更多运算排序支持降序成绩系统支持删除 下一篇我们将进入面向对象编程的世界敬请期待 参考资料Java 官方文档 - Language Basics菜鸟教程 - Java 基础语法