当前位置: 首页 > news >正文

10 基础阶段综合实战

🟢 10 基础阶段综合实战

📅 更新于 2026年5月 | ✍️ 原创文章,转载请注明出处



1. 猜数字游戏

1.1 游戏规则

  • 程序随机生成 1-100 的数字
  • 用户反复猜测,程序提示"大了"或"小了"
  • 猜对后显示猜测次数

1.2 完整代码

importjava.util.Random;importjava.util.Scanner;publicclassGuessNumber{publicstaticvoidmain(String[]args){Randomrandom=newRandom();inttarget=random.nextInt(100)+1;// 1-100Scannerscanner=newScanner(System.in);intcount=0;System.out.println("🎮 猜数字游戏!范围 1-100");while(true){System.out.print("请输入你的猜测: ");intguess=scanner.nextInt();count++;if(guess==target){System.out.println("🎉 恭喜!你猜对了!答案就是 "+target);System.out.println("你一共猜了 "+count+" 次");break;}elseif(guess>target){System.out.println("📈 大了!再试试");}else{System.out.println("📉 小了!再试试");}}scanner.close();}}

1.3 代码解析

知识点说明
Random生成随机数,nextInt(100)生成 0-99
Scanner接收用户输入
while(true)无限循环,直到猜对才break
if-else多条件判断

1.4 进阶:二分查找策略

// 最优策略:每次取中间值// 第1次猜50,第2次猜25或75...// 最多只需7次就能猜出1-100的任意数字// log₂(100) ≈ 6.64,向上取整 = 7

2. 简易计算器

2.1 功能说明

支持加减乘除四则运算,输入两个数和运算符,输出结果。

2.2 完整代码

importjava.util.Scanner;publicclassSimpleCalculator{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);System.out.println("🧮 简易计算器");System.out.print("请输入第一个数: ");doublenum1=scanner.nextDouble();System.out.print("请输入运算符 (+, -, *, /): ");charoperator=scanner.next().charAt(0);System.out.print("请输入第二个数: ");doublenum2=scanner.nextDouble();doubleresult;booleanvalid=true;switch(operator){case'+':result=num1+num2;break;case'-':result=num1-num2;break;case'*':result=num1*num2;break;case'/':if(num2!=0){result=num1/num2;}else{System.out.println("❌ 错误:除数不能为0!");valid=false;result=0;}break;default:System.out.println("❌ 无效的运算符!");valid=false;result=0;}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] (5>3, 交换) [3, 5, 8, 1, 2] → [3, 5, 8, 1, 2] (5<8, 不换) [3, 5, 8, 1, 2] → [3, 5, 1, 8, 2] (8>1, 交换) [3, 5, 1, 8, 2] → [3, 5, 1, 2, 8] (8>2, 交换) 结果: [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(inti=0;i<arr.length-1;i++){booleanswapped=false;// 优化:如果没交换说明已有序for(intj=0;j<arr.length-1-i;j++){if(arr[j]>arr[j+1]){// 交换inttemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;swapped=true;}}System.out.println("第"+(i+1)+"轮: "+arrayToString(arr));if(!swapped){System.out.println("已有序,提前结束!");break;}}System.out.println("排序后: "+arrayToString(arr));}privatestaticStringarrayToString(int[]arr){StringBuildersb=newStringBuilder("[");for(inti=0;i<arr.length;i++){sb.append(arr[i]);if(i<arr.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_STUDENTS=50;staticString[]names=newString[MAX_STUDENTS];staticdouble[]scores=newdouble[MAX_STUDENTS];staticintstudentCount=0;publicstaticvoidmain(String[]args){Scannerscanner=newScanner(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("请选择功能: ");intchoice=scanner.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(studentCount>=MAX_STUDENTS){System.out.println("❌ 已达最大人数限制!");return;}System.out.print("请输入学生姓名: ");Stringname=scanner.nextLine();System.out.print("请输入成绩 (0-100): ");doublescore=scanner.nextDouble();if(score<0||score>100){System.out.println("❌ 成绩范围错误!");return;}names[studentCount]=name;scores[studentCount]=score;studentCount++;System.out.println("✅ 录入成功!当前共 "+studentCount+" 名学生");}// 显示所有成绩staticvoidshowAllScores(){if(studentCount==0){System.out.println("📭 暂无数据");return;}System.out.println("\n姓名\t\t成绩\t等级");System.out.println("-".repeat(30));for(inti=0;i<studentCount;i++){Stringgrade=getGrade(scores[i]);System.out.printf("%-10s\t%.1f\t%s%n",names[i],scores[i],grade);}}// 统计分析staticvoidanalyzeScores(){if(studentCount==0){System.out.println("📭 暂无数据");return;}doublesum=0,max=scores[0],min=scores[0];int[]gradeCount=newint[5];// 优秀、良好、中等、及格、不及格for(inti=0;i<studentCount;i++){sum+=scores[i];if(scores[i]>max)max=scores[i];if(scores[i]<min)min=scores[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]++;}doubleavg=sum/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("请输入要查找的姓名: ");Stringname=scanner.nextLine();booleanfound=false;for(inti=0;i<studentCount;i++){if(names[i].equals(name)){System.out.printf("✅ 找到: %s, 成绩: %.1f, 等级: %s%n",name,scores[i],getGrade(scores[i]));found=true;break;}}if(!found){System.out.println("❌ 未找到该学生");}}// 获取等级staticStringgetGrade(doublescore){if(score>=90)return"优秀 ⭐";if(score>=80)return"良好 👍";if(score>=70)return"中等 📝";if(score>=60)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 基础语法
http://www.zskr.cn/news/1424368.html

相关文章:

  • 麒麟Kylin桌面版网络配置保姆级教程:从插网线到连隐藏Wi-Fi,一次搞定
  • Silicon Graphics 030-0686-004图形控制板卡
  • 2026年5月新消息:江苏省内信誉与实力兼备的奥迪双离合维修服务商深度解析 - 2026年企业资讯
  • 四川灭火器维修充装正规机构排行:写字楼灭火器维修、工厂灭火器维修、工地灭火器回收充装、干粉灭火器充装、废旧灭火器回收选择指南 - 优质品牌商家
  • 3步快速导出QQ空间完整历史记录:GetQzonehistory终极指南
  • 博客迁移通知
  • STM32 HAL库实战:用TB6612FNG模块让GB37-520电机实现前进、后退、转向的多种运动模式
  • 2026年漂染水处理药剂权威供应商排行盘点:福建,泉州,闽南,日化化工原料、消泡剂水处理药剂、漂染化工原料、环保化工原料选择指南 - 优质品牌商家
  • 制造业AI智能体选型:跨系统执行、任务拆解与信创适配三大技术维度对比
  • 从Windows转战Ubuntu?手把手教你无缝迁移Beyond Compare使用习惯(含dpkg安装与破解详解)
  • 从MODBUS协议栈到你的代码:深入理解CRC-16校验的‘位反序’到底在干什么?
  • FastAdmin后台开发实战:手把手教你从零新增一个自定义管理页面(ThinkPHP6框架)
  • Simulink封装模块的‘隐藏关卡’:初始化命令与回调函数实战指南(避坑+案例)
  • 给STM32CubeIDE新手的第一份保姆级环境搭建指南(含JRE安装、汉化、主题美化)
  • 如何让AI代理操作SCADA和PLC设备获取数据?实在Agent闭锁环实战解析
  • COM3D2.MaidFiddler:5分钟掌握COM3D2女仆实时编辑器完整指南
  • 55个功能点解锁炉石传说新体验:HsMod全面优化指南
  • 给测试新人的FOTA实战指南:从Tbox到整车,如何高效设计车载固件升级测试用例?
  • 猫抓扩展终极指南:5步掌握浏览器资源嗅探与安全下载技巧
  • 大模型推理加速实战:VLLM 与 TensorRT-LLM 深度拆解——PagedAttention 如何让吞吐量提升 2.3 倍,量化与部署中的图优化又带来 40% 显存节省?
  • 告别‘蝙蝠翼’困扰:用Ansys Zemax非序列模式精准模拟LED光源(附RSMX文件实战)
  • ncmdumpGUI:解锁网易云音乐格式限制的终极免费解决方案
  • 解锁百度网盘限速困扰:3步实现Python直链提取高速下载
  • Vue Bot UI:快速构建现代化聊天机器人界面的终极指南
  • Jasminum:让中文文献管理从“头疼“变“头号玩家“的智能革命
  • 2026年5月更新:如何精准锁定与服务俱佳的宁波全屋原木定制厂家? - 2026年企业资讯
  • C语言位操作技巧,看完让你代码更专业
  • Arduino Nano与DFPlayer打造光之宝石音乐盒:从电路设计到3D打印的完整创客教程
  • 论文开题报告怎么写呀?
  • 【单射频链束训练】对具有1个射频链的OFDM-MIMO系统进行束扫描研究附Matlab代码