当前位置: 首页 > 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.jsqmd.com/news/913058/

相关文章:

  • 麒麟Kylin桌面版网络配置保姆级教程:从插网线到连隐藏Wi-Fi,一次搞定
  • Silicon Graphics 030-0686-004图形控制板卡
  • 2026年5月新消息:江苏省内信誉与实力兼备的奥迪双离合维修服务商深度解析 - 2026年企业资讯
  • 056、HDR 合成后画面诡异、发灰?多曝光对齐、鬼影消除与 Tone Mapping 调优方案
  • 当Lindy遇上低代码:构建“越运行越可信”的自动化系统,这4个反直觉设计决策决定成败
  • 成都H型钢供应商|盛世钢联国标现货批发,钢厂直供仓储中心 - 四川盛世钢联营销中心
  • Cadence OrCAD层次化设计进阶:像管理代码分支一样管理你的电路模块
  • 四川灭火器维修充装正规机构排行:写字楼灭火器维修、工厂灭火器维修、工地灭火器回收充装、干粉灭火器充装、废旧灭火器回收选择指南 - 优质品牌商家
  • 成都H型钢经销商|盛世钢联国标现货批发,钢厂直供仓储中心 - 四川盛世钢联营销中心
  • Amazon RDS 蓝绿部署完全指南
  • Claude研究报告生成:从零到专业级输出的7步标准化工作流(含Prompt工程黄金公式)
  • MICROCHIP代理现货库存LAN9500A-ABZJ-TR高性能单芯片USB转以太网控制器
  • 2026年回火炉实测评测:烧结炉/网带炉/退火炉/钎焊炉/光亮炉/台车炉/回火炉/正火炉/工艺性能与服务维度对比 - 优质品牌商家
  • C语言经典100题(手把手 编程)
  • 第20篇|底部导航:地图、拍照、相册、保险箱的产品路径
  • 3步快速导出QQ空间完整历史记录:GetQzonehistory终极指南
  • 3步部署WenQuanYi Micro Hei:解锁高效中文显示的轻量级解决方案
  • STM32 HAL库实战:用TB6612FNG模块让GB37-520电机实现前进、后退、转向的多种运动模式
  • 2026年Q2不锈钢景墙厂家评测:不锈钢幕墙、不锈钢装饰线条、北京铝板廊架、园林景观廊架、幕墙铝板、玻璃栏杆、车库玻璃雨棚选择指南 - 优质品牌商家
  • 博客迁移通知
  • 赛普拉斯代理现货库存CYUSB3014-BZXC高性能USB 3.0外设控制器芯片
  • 2026年漂染水处理药剂权威供应商排行盘点:福建,泉州,闽南,日化化工原料、消泡剂水处理药剂、漂染化工原料、环保化工原料选择指南 - 优质品牌商家
  • PEExplorerV2深度解析:如何用三窗格架构解密Windows可执行文件内部秘密?
  • 终极指南:在Linux系统下无缝访问BitLocker加密分区的完整方案
  • 【原创解锁】15日天气预报 解锁会员 精准预警超好用
  • 字符串之Hash
  • 第21篇|侧边导航:平板和 2in1 为什么不照搬手机布局
  • 保姆级教程:用Matlab/Simulink+CarSim复现平行泊车仿真(附模型文件与避坑点)
  • CSS Transitions 过渡效果详解
  • 抖音音频提取革命:3分钟搞定批量下载的开源神器