JAVA经典数组练习题-随机排名
2023-09-11 14:22:30 时间
需求
某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报。
请先依次录入5名员工的工号,然后展示出一组随机的排名顺序。
比如:
分析
在程序中录入5名员工的工号存储起来。使用数组。(动态,静态都可以)
依次遍历数组中的每个元素,随机一个索引数据,让当前元素与该索引位置处的元素进行交换。
代码
import java.util.Random;
import java.util.Scanner;
public class ArrayDemo3 {
public static void main(String[] args) {
//某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报。
//请先依次录入5名员工的工号,然后展示出一组随机的排名顺序。
//动态初始化数组
int[] codes = new int[5];
//定义一个循环,循环5次,依次录入一个工号存入对应的位置
Scanner sc = new Scanner(System.in);
for (int i = 0; i < codes.length; i++) {
//正式录入工号
System.out.println("请输入第" + (i + 1) + "个员工的工号:");
int code = sc.nextInt();
codes[i] = code;
}
//验证初始化数组
System.out.println("排序前: ");
for (int i = 0; i < codes.length; i++) {
System.out.print(codes[i] + "\t");
}
System.out.println("------------------------------");//分割线
Random r = new Random();
int temp = 0;
//遍历数组中的每个元素,随机一个索引出来,让该元素与随机索引位置处的元素互换(重点)
for (int i = 0; i < codes.length; i++) {
int index = r.nextInt(5);
//temp 存放变量:备份用 ;index:随机数;codes[i]:原来的数
temp = codes[i];
codes[i] = codes[index];
codes[index] = temp;
}
//遍历数组
for (int i = 0; i < codes.length; i++) {
System.out.print(codes[i] + "\t");
}
}
}
运行结果
充分理解
假设要让22和35这两个数值进行交换
22不能直接赋值给35,否则35这个数就丢了。所以我们应该准备一个临时的变量
所以顺序就是,35赋值给临时变量,临时变量变成了35,然后22 代表数组arr[0]赋值给35,也就是arr[2]。然后临时变量再赋值给arr[0],这样就实现了数据交换了。
静态数组的方法
代码
import java.util.Random;
public class ArrayTest4 {
//某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报。
//请先依次录入5名员工的工号,然后展示出一组随机的排名顺序。
public static void main(String[] args) {
int[] arr = {22,33,35,13,88};
System.out.println("未排序前:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println();
Random random = new Random();
int temp = 0;
for (int i = 0; i < 5; i++) {
//生成了一个0-4的随机数
int cover = random.nextInt(5);
temp = arr[i];
arr[i] = arr[cover];
arr[cover] = temp;
}
System.out.println("随机排序后:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
}
}
运行结果
文章原创,欢迎转载,请注明文章出处: JAVA经典数组练习题-随机排名.。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。
相关文章
- Java反射机制详解(3) -java的反射和代理实现IOC模式 模拟spring
- 尼恩Java高并发三部曲,极致经典+入大厂必备+面试必备+高薪必备
- 【JAVA】JSP操作数据库简单实例和mysql-connector-java-5.0.3-bin.jar项目配置方法
- 【LeetCode-面试算法经典-Java实现】【033-Search in Rotated Sorted Array(在旋转数组中搜索)】
- There is insufficient memory for the Java Runtime Environment to continue问题解决
- 10万字208道Java经典面试题总结(附答案)
- 【Java】【异常排查】java.lang.NoClassDefFoundError 完美解决
- Java 获取Url中的参数Map
- 《Java入门经典(第7版)》—— 6.9 问与答
- 《Java入门经典(第7版)》—— 6.11 练习
- java经典面试题
- Java经典实例:实现一个简单堆栈
- Java经典实例:比较浮点数
- java提取字符串数字,Java获取字符串中的数字
- Java & Groovy & Scala & Kotlin - 20.Switch 与模式匹配
- Java学习-084-java.sql.SQLException: Zero date value prohibited 问题解决
- 正确使用MySQL JDBC setFetchSize()方法解决JDBC处理大结果集 java.lang.OutOfMemoryError: Java heap space
- (转)java 打印自身代码——真实世界不存在自指
- Java_模拟comet的实现
- 浅析几种Java Http请求库的使用:HttpURLConnection、RestTemplate、OKhttp、Feign/OpenFeign
- java重点之重载和重写的区别
- 深入Java设计模式之装饰模式
- Java学习---IO操作
- dom4j处理java中xml还是很方便的
- Java中的final如何理解——详解
- Java操作Mongodb 保存/读取java对象到/从mongodb
- java基础概念经典题目汇集
- 【LeetCode-面试算法经典-Java实现】【139-Word Break(单词拆分)】
- 我的Java开发学习之旅------>Java经典排序算法之归并排序
- Java垃圾回收
- [CareerCup] 14.2 Try-catch-finally Java中的异常处理
- 多种方式解决Java控制台报错 java.util.LinkedHashMap cannot be cast to.....