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

Java 学习笔记(基础篇4)

1. 综合练习

① 开发验证码

编写一个 Java 程序,实现如下功能:

  1. 程序需要首先准备一个包含 26 个小写字母(a-z)和 26 个大写字母(A-Z)的字符数组,共 52 个字符。
  2. 从上述字符数组中随机选取 4 个字符,拼接成字符串。
  3. 生成一个 0-9 之间的随机数字,拼接到上述字符串的末尾。
  4. 最终将拼接后的完整字符串输出到控制台(注意:初始字符串以一个空格开头)。
public class test1 {public static void main(String[] args) {char[] chs = new char[52];for (int i = 0; i < chs.length; i++) {if (i <= 25){chs[i] = (char)(97 + i);} else{chs[i] = (char)(65 + i - 26);}}String result = " ";Random r = new Random();for (int i = 0; i < 4; i++) {int randomIndex = r.nextInt(chs.length);result += chs[randomIndex];}int number = r.nextInt(10);result = result + number;System.out.println(result);}
}

关键逻辑:准备字符数组:存储所有大小写字母:

  • 小写字母填充(i 从 0 到 25)
    通过 (char)(97 + i) 计算字符。
    原理:在 ASCII 编码中,'a' 对应数字 97,'b' 对应 98…… 因此 97 + i 当 i=0 时为 97(即'a'),i=1 时为 98(即'b'),直到 i=25 时为 122(即'z')。

  • 大写字母填充(i 从 26 到 51)
    通过 (char)(65 + i - 26) 计算字符。
    原理:ASCII 中 'A' 对应 65,i-26 让索引从 26 开始重新转为 0-25(例如 i=26 时,i-26=0,对应 65+0=65 即'A';i=27 时对应'B',直到 i=51 时为 65+25=90 即'Z')。

最终数组内容:['a','b',...,'z','A','B',...,'Z']

② 评委打分

某比赛需要实现一个评委打分系统,规则如下:

  1. 共有 6 位评委对选手进行打分,打分范围为 0-100 分(包含 0 和 100),超出范围的分数为无效分数,需重新输入;
  2. 系统需接收并存储 6 位评委的有效打分;
  3. 最终得分计算规则为:去掉一个最高分和一个最低分后,计算剩余分数的平均值(结果取整数);
  4. 输出所有评委的打分以及选手的最终得分。

要求:

需使用方法封装不同的功能,至少包含以下方法:

  • getScores():负责接收用户输入的 6 个有效分数,返回存储分数的数组;
  • getMax(int[] scoreArr):接收分数数组,返回数组中的最高分;
  • getMin(int[] scoreArr):接收分数数组,返回数组中的最低分;
  • getSum(int[] scoreArr):接收分数数组,返回数组中所有分数的总和;
public class test1 {public static void main(String[] args) {int[] scoreArr = getScores();for (int i = 0; i < scoreArr.length; i++) {System.out.println(scoreArr[i]);}int max = getMax(scoreArr);int min = getMin(scoreArr);int sum = getSum(scoreArr);int avg = (sum - max -min) / (scoreArr.length -2);System.out.println("选手的最终得分为" + avg);}public static int getMax(int[] scoreArr){int max = scoreArr[0];for (int i = 1; i < scoreArr.length; i++) {if (scoreArr[i] > max) {max = scoreArr[i];}}return max;}public static int getMin(int[] scoreArr){int min = scoreArr[0];for (int i = 1; i < scoreArr.length; i++) {if (scoreArr[i] < min) {min = scoreArr[i];}}return min;}public static int getSum(int[] scoreArr){int sum = 0;for (int i = 0; i < scoreArr.length; i++) {sum = sum + scoreArr[i];}return sum;}public static int[] getScores(){int[] scores = new int[6];Scanner sc = new Scanner(System.in);for (int i = 0; i < 6; ){System.out.println("请输入评委的打分");int score = sc.nextInt();if (score >= 0 && score <= 100){scores[i] = score;i++;} else{System.out.println("成绩超出范围,继续录入,当前的i为" + i);}}return scores;}
}

main 方法:

(1) int[] scoreArr = getScores(); 

  • 这行代码中,getScores() 方法返回的是数组的引用(可以理解为数组在内存中的地址),而不是数组本身的数据。
  • 方法执行结束时,return scores; 返回的是这个数组的引用(地址)。

(2) int max = getMax(scoreArr);

  • 作用:调用getMax方法,传入scoreArr数组,获取数组中的 “最高分”,并把这个值存到变量max中。
  • 例子:如果scoreArr[80, 90, 85, 95, 75, 88],那么max会被赋值为 95。

getScores() 方法:

(1) 分支 1(有效分数):

  • scores[i] = score;:把当前有效分数存到数组scores的第 i 个位置(比如 i=0 时存第一个分数,i=1 时存第二个,以此类推)。
  • i++;:只有分数有效时,i才 + 1,确保下一次循环录入下一个位置的分数(直到 i=6 时循环结束)。

(2) 注意方法的返回值类型是 Int[ ]

getMax() 方法:

核心原则:参数的类型(这里的int[])不能错,因为它决定了方法能接收什么样的数据;而参数的名称只是一个标识符,只要方便理解和使用即可(通常会取有意义的名字,比如scoresa更易读)。

http://www.lryc.cn/news/624006.html

相关文章:

  • C++零拷贝网络编程实战:从理论到生产环境的性能优化之路
  • JavaScript 性能优化实战:从评估到落地的全链路指南
  • SparkSQL性能优化实践指南
  • 第16节:自定义几何体 - 从顶点构建3D世界
  • 【FreeRTOS】刨根问底6: 应该如何防止任务栈溢出?
  • 【网络安全】Webshell的绕过——绕过动态检测引擎WAF-缓存绕过(Hash碰撞)
  • 什么是GD库?PHP中7大类64个GD库函数用法详解
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(3):21-30语法
  • 【AI论文】序曲(PRELUDE):一项旨在考察对长文本语境进行全局理解与推理能力的基准测试
  • PHP静态类self和static用法
  • 6-服务安全检测和防御技术
  • Tomcat Service 服务原理
  • Coin与Token的区别解析
  • java八股文-(spring cloud)微服务篇-参考回答
  • C语言基础:(十六)深入理解指针(6)
  • Centos 更新/修改宝塔版本
  • Rust 入门 生命周期(十八)
  • react echarts图表监听窗口变化window.addEventListener(‘resize’)与ResizeObserver()
  • 音乐创作魔法:解锁和弦与旋律的变化技巧
  • 3D打印——给开发板做外壳
  • 如何做HTTP优化
  • 【JAVA 核心编程】面向对象高级:类变量与方法 抽象类与接口
  • PowerPoint和WPS演示让多个对象通过动画同时出现
  • NY270NY273美光固态闪存NY277NY287
  • Portkey-AI gateway 的一次“假压缩头”翻车的完整排障记:由 httpx 解压异常引发的根因分析
  • duiLib 解决点击标题栏中按钮无响应问题
  • C# 反射和特性(自定义特性)
  • 健身房预约系统SSM+Mybatis实现(三、校验 +页面完善+头像上传)
  • RISC-V汇编新手入门
  • 【LeetCode】单链表经典算法:移除元素,反转链表,约瑟夫环问题,找中间节点,分割链表