1. 综合练习

(1) 抽奖

public class test10 {public static void main(String[] args) {int[] arr = {2,588,888,1000,10000};Random r = new Random();for (int i = 0; i < arr.length; i++) {int randomIndex = r.nextInt(arr.length);int temp = arr[randomIndex];arr[randomIndex] = arr[i];arr[i] = temp;}for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}}
}

关键逻辑:

循环变量i从 0 遍历到数组长度 - 1,对每个位置的元素进行随机交换操作,步骤如下:

  • 生成随机索引:int randomIndex = r.nextInt(arr.length),随机索引范围是 0 到数组长度 - 1(此例中为 0-4)。
  • 交换元素:通过中间变量temp实现arr[i]arr[randomIndex]的位置交换
  • 由于代码仅进行元素位置的交换,没有新增、复制或删除元素,所以元素不会重复

(2) 双色球中奖系统

两大功能。具体需求如下:

号码组成

  • 红球:从 1-33 的整数中选择 6 个,不可重复
  • 蓝球:从 1-16 的整数中选择 1 个,可与历史号码重复
  • 一注完整号码包含 6 个红球 + 1 个蓝球,共 7 个数字

输入验证

  • 红球必须在 1-33 范围内,且 6 个红球不能重复
  • 蓝球必须在 1-16 范围内
  • 若用户输入不符合规则,需提示错误原因并要求重新输入
public class test11 {public static void main(String[] args) {int[] arr = createNumber();System.out.println("----------------");for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}System.out.println();int[] userInputArr = userInputNumber();for (int i = 0; i < userInputArr.length; i++) {System.out.print(userInputArr[i] + " ");}int redCount = 0;int blueCount = 0;for (int i = 0; i < userInputArr.length - 1; i++) {int redNumber = userInputArr[i];for (int j = 0; j < arr.length - 1; j++) {if (redNumber == arr[j]) {redCount++;break;}}}int blueNumber = userInputArr[userInputArr.length - 1];if (blueNumber == arr[arr.length - 1]) {blueCount++;}System.out.println();System.out.println(redCount);System.out.println(blueCount);}public static int[] userInputNumber(){int[] arr = new int[7];Scanner sc = new Scanner(System.in);for (int i = 0; i < 6; ) {System.out.println("请输入第" + (i + 1) + "个红球号码");int redNumber = sc.nextInt();if(redNumber >= 1 && redNumber <= 33){boolean flag = contains(arr, redNumber);if (!flag){arr[i] = redNumber;i++;} else{System.out.println("当前红球号码已经存在,请重新输入");}} else{System.out.println("当前红球号码超出范围");}}System.out.println("请输入篮球号码");while (true) {int blueNumber = sc.nextInt();if (blueNumber >= 1 && blueNumber <= 16){arr[arr.length - 1] = blueNumber;break;} else{System.out.println("当前蓝球号码超出范围");}}return arr;}public static int[] createNumber(){int[] arr = new int[7];Random r = new Random();for (int i = 0; i < 6; ) {int redNumber = r.nextInt(33) + 1;boolean flag = contains(arr, redNumber);if (!flag) {arr[i] = redNumber;i++;}}int blueNumber = r.nextInt(16) + 1;arr[arr.length - 1] = blueNumber;return arr;}public static boolean contains(int[] arr, int number) {for (int i = 0; i < arr.length; i++) {if (arr[i] == number) {return true;}}return false;}
}

① 蓝球输入的无限循环,蓝球输入使用while (true)循环,直到输入合法才break

② contains() 方法:

public static boolean contains(int[] arr, int num) {for (int i = 0; i < arr.length; i++) {if (arr[i] == num) {  // 这里的numreturn true;}}return false;
}
  • 括号里的numint num)是形参:它是方法定义时声明的参数,用于接收调用方法时传入的实际值,是形参的 “定义处”。
  • 代码里的numarr[i] == num中的num)不是新的形参:它是对前面已经定义的形参num的 “使用”,引用的是同一个变量。

2. 二维数组

(1) 二维数组静态初始化:

int[][] arr = {{11, 22}, {33, 44}};

(2) 二维数组遍历

int[][] arr = {{11, 22, 33}, {44, 55, 66}};
for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {System.out.print(arr[i][j] + " ");}System.out.println();
}

(3) 二维数组动态初始化

数据类型[][] 数组名 = new 数据类型[行数][列数];

示例:

int[][] arr = new int[2][3];  // 2行3列的二维数组
arr[0] = new int[]{11, 22, 33};
arr[1] = new int[]{44, 55, 66};
  • 2:表示二维数组长度为 2,可以装 2 个一维数组
  • 3:表示每一个一维数组的长度都是 3,可以装 3 个 Int 类型的元素

(4) 计算总营业额

public class test12 {public static void main(String[] args) {int[][] yearArrArr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};int yearSum = 0;for (int i = 0; i < yearArrArr.length; i++) {int[] quarterArr = yearArrArr[i];int sum = getSum(quarterArr);System.out.println("第" + (i + 1) + "个季度的总营业额为" + sum);yearSum += sum;}System.out.println("全年总营业额为:" + yearSum);}public static int getSum(int[] arr){int sum = 0;for (int i = 0; i < arr.length; i++) {sum += arr[i];}return sum;}
}

这个程序中存在两次遍历,分别对应不同的层次:

① 第一次遍历(在main方法中)

遍历的是二维数组的外层,目的是逐个取出每个季度的一维数组:

// 外层循环:遍历二维数组,每次取出一个季度的一维数组
for (int i = 0; i < yearArrArr.length; i++) {int[] quarterArr = yearArrArr[i]; // 取出当前季度的一维数组// ...
}

② 第二次遍历(在getSum方法中)
遍历的是单个一维数组,目的是计算这个数组中所有元素的总和

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93816.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93816.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/93816.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P1162 填涂颜色(染色法)

P1162 填涂颜色 - 洛谷 #include <bits/stdc.h> using namespace std; #define ll long long const int N 1e7 10; int n; int a[100][100],b[110][110]; int dx[4]{-1,1,0,0}; int dy[4]{0,0,1,-1}; void dfs(int x,int y) {if(x<0 || x>n1 || y<0 || y>n…

Webrtc在项目中承担的角色

一、简单划分 解决方案层:负责对SDK的对接、操作业务逻辑、UI封装、采集、渲染等,属于基础业务逻辑层 会议SDK层:负责对会议业务逻辑的封装、服务端交互、创会/加会/离会等,属于会议业务逻辑层 mediasoupclient层: 负责对webrtc封装,提供会议层面相关接口,属于webrtc业务…

Servlet上传文件

这是一个Maven项目tomcat版本&#xff1a;9.0.107pom.xml<project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.…

cocos creator 3.8 - 精品源码 -《汉中汉:汉字中的字》

cocos creator 3.8 - 精品源码 - 超级文字大师游戏介绍功能介绍免费体验下载开发环境游戏截图免费体验游戏介绍 《汉中汉&#xff1a;汉字中的字》、找汉字&#xff0c;是一款从文字中的笔画找出可以组成新汉字的小游戏。比如&#xff1a;“王”字中的笔画就可以组成&#xff…

手机端的音视频界面或者图片文档界面共享给大屏

手机端的音视频界面或者图片文档界面共享给大屏&#xff0c;可通过无线投屏和有线连接等技术手段实现&#xff0c;以下是具体介绍&#xff1a;无线投屏&#xff1a;AirPlay&#xff1a;这是苹果公司开发的无线共享协议。苹果手机可通过上滑或下拉调出控制中心&#xff0c;点击 …

Linux内存管理系统性总结

Linux内存管理系统性总结 内存管理核心架构图 #mermaid-svg-hKRdgBBYXZTiost8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hKRdgBBYXZTiost8 .error-icon{fill:#552222;}#mermaid-svg-hKRdgBBYXZTiost8 .error-t…

MySQL 运算符实战:9 道经典练习题解析

MySQL 运算符实战&#xff1a;9 道经典练习题解析 运算符是 MySQL 查询的 “灵魂”&#xff0c;灵活运用各类运算符能让数据筛选更加精准高效。本文通过 9 道实战练习题&#xff0c;详解逻辑运算符、比较运算符及模糊匹配的用法&#xff0c;帮你快速掌握运算符的核心应用场景。…

【R语言】更换电脑后,如何在新设备上快速下载原来设备的 R 包?

【R语言】更换电脑后&#xff0c;如何在新设备上快速下载原来设备的 R 包&#xff1f; 在日常使用 R 进行数据分析时&#xff0c;我们往往会安装很多包&#xff08;packages&#xff09;&#xff0c;一旦更换电脑&#xff0c;手动一个一个重新安装会非常麻烦。本文介绍一种简单…

如何在 Ubuntu 24.04 或 22.04 LTS 上安装 PowerShell

在本教程中,我们将学习如何在 Ubuntu 24.04 Noble 或 22.04 Jammy JellyFish Linux 中通过命令终端安装 Microsoft Windows PowerShell。 Windows PowerShell 既是一个命令行外壳程序,也是一种脚本语言。它拥有超过 130 个遵循一致语法和命名约定的命令行工具,称为 cmdlet(…

基于支持向量机的数据回归预测(libsvm) SVM

一、作品详细简介 1.1附件文件夹程序代码截图 全部完整源代码&#xff0c;请在个人首页置顶文章查看&#xff1a; 学行库小秘_CSDN博客​编辑https://blog.csdn.net/weixin_47760707?spm1000.2115.3001.5343 1.2各文件夹说明 1.2.1 main.m主函数文件 这段 MATLAB 代码实现…

Flowith-节点式GPT-4 驱动的AI生产力工具

本文转载自&#xff1a;Flowith-节点式GPT-4 驱动的AI生产力工具 - Hello123工具导航 ** 一、节点式 AI 工作流革新者&#xff1a;Flowith 深度解析 二、产品核心定位 Flowith 是一款基于 GPT-4 Turbo 的节点式 AI 生产力工具&#xff0c;突破传统单线程聊天模式&#xff0c…

MySQL的事务日志:

目录 redo&#xff08;重做日志&#xff09;&#xff1a; 特点&#xff1a; 组成&#xff1a; 整体流程&#xff1a; redo log buffer与redo log file之间的刷盘策略&#xff1a; 异步刷盘&#xff1a; 同步刷盘&#xff1a; 拆中策略&#xff1a; undo&#xff08;回…

JavaScript 中 throw error 与 throw new Error(error) 的用法及区别,分别适合什么场景使用?

JavaScript 中 throw error 与 throw new Error(error) 的用法及区别 在 JavaScript 中&#xff0c;throw 关键字用于抛出异常。当代码遇到某些错误或异常情况时&#xff0c;可以通过抛出错误来通知程序&#xff0c;方便后续的错误处理。尽管 throw 的使用看似简单&#xff0c…

鸿蒙自带组件效果大全

图形变换-视效与模糊-通用属性-ArkTS组件-ArkUI&#xff08;方舟UI框架&#xff09;-应用框架 - 华为HarmonyOS开发者 注意:找到需求效果之后先对一下版本 视距 图像效果 图片裁剪 颜色渐变 前景属性设置 外描边设置: 视效设置: 组件内容模糊 运动模糊 点击回弹效果…

ISP算法如何优化提升成像质量

ISP算法通过多维度技术协同优化成像质量&#xff0c;核心优化路径如下&#xff1a;一、降噪与细节增强‌AI驱动降噪‌深度学习模型实时识别噪点模式&#xff0c;暗光场景信噪比提升5倍以上&#xff0c;同时保留纹理细节。时空域联合降噪技术抑制运动模糊&#xff0c;鬼影消除率…

单例模式及优化

单例模式是一种创建型设计模式&#xff0c;其核心是确保一个类在程序中只能存在唯一实例&#xff0c;并提供一个全局访问点。这种模式适用于需要集中管理资源&#xff08;如日志、配置、连接池&#xff09;的场景&#xff0c;避免资源冲突和重复创建的开销。 一、介绍 类型 单例…

Dockerfile优化指南:利用多阶段构建将Docker镜像体积减小90%

更多如果你已经跟随我们之前的教程&#xff0c;亲手将自己的应用装进了Docker这个“魔法盒子”&#xff0c;那你可能很快就会遇到一个幸福但又尴尬的烦恼&#xff1a;你亲手构建的Docker镜像&#xff0c;竟然像一个塞满了石头和棉被的行李箱&#xff0c;臃肿不堪&#xff0c;笨…

英文PDF翻译成中文怎么做?试试PDF翻译工具

在全球化快速发展的时代&#xff0c;跨语言交流变得愈发频繁&#xff0c;无论是学术研究、商务合作还是日常学习&#xff0c;都离不开一个高效、准确的翻译工具。尤其是对于PDF文件的翻译需求&#xff0c;更是日益增长。今天&#xff0c;就让我们一起深入了解几款在PDF翻译领域…

macOS使用brew切换Python版本【超详细图解】

目录 一、更新Homebrew仓库 二、安装pyenv 三、将pyenv添加到bash_profile文件中 四、使.bash_profile文件的更改生效 五、安装需要的Python版本 六、设置全局使用的Python版本 七、检查Python版本是否切换成功 pyenv常用命令 一、更新Homebrew仓库 brew update 这个…

[矩阵置零]

初始思路分析 这段代码实现了将矩阵中元素为0的行和列全部置零的功能。主要思路是使用标记数组记录需要置零的行和列。以下是详细分析&#xff1a; 1. 初始化阶段 int m matrix.size(); int n matrix[0].size(); vector<bool> row(m), col(n);获取矩阵的行数m和列数n创…