java 接收给定的数据(如:4 88,其中第一个数代表数组长度,第二个数代表随机数种子); 创建数组并添加随机数(随机数介于 0-19 之间); 输出随机数出现的次数(出现次数大于 0 才输出); 按随机数大小排序输出。
时间: 2024-09-18 10:17:15 浏览: 40
在 Java 中,你可以按照以下步骤实现这个功能:
1. 首先,我们需要接收输入数据,这通常通过Scanner类从控制台读取,或者从命令行参数获取。假设你已经有了这两个数字,可以声明一个字符串来解析它们:
```java
String input = "4 88"; // 示例输入
int[] arrayLengthAndSeed = Arrays.stream(input.split(" ")).mapToInt(Integer::parseInt).toArray();
```
2. 然后,根据数组长度(`arrayLengthAndSeed[0]`),创建一个整型数组,并设置随机数生成器的种子(`arrayLengthAndSeed[1]`):
```java
int length = arrayLengthAndSeed[0];
int seed = arrayLengthAndSeed[1];
Random random = new Random(seed);
int[] numbers = new int[length];
```
3. 使用for循环生成指定范围内的随机数,并将它们添加到数组中:
```java
for (int i = 0; i < length; i++) {
numbers[i] = random.nextInt(20); // 生成0到19之间的随机数
}
```
4. 创建一个HashMap存储每个随机数及其出现次数,遍历数组更新次数:
```java
Map<Integer, Integer> countMap = new HashMap<>();
for (int num : numbers) {
if (countMap.containsKey(num)) {
countMap.put(num, countMap.get(num) + 1);
} else {
countMap.put(num, 1);
}
}
```
5. 最后,根据随机数出现的次数过滤并打印结果。如果出现次数大于0,就将其加入到一个列表中并排序:
```java
List<Map.Entry<Integer, Integer>> filteredEntries = countMap.entrySet().stream()
.filter(entry -> entry.getValue() > 0)
.sorted(Map.Entry.comparingByValue())
.collect(Collectors.toList());
filteredEntries.forEach(entry -> System.out.println("数值:" + entry.getKey() + ", 出现次数:" + entry.getValue()));
```
现在,程序已经完成了上述所有操作。如果你想让这段代码更通用,可以在一个方法中封装起来,然后提供用户输入。记得最后加上相应的错误处理,例如检查输入是否有效。