随机数获取数组,然后升序排列,获取数组中最小的五个奇数
程序员文章站
2022-05-12 10:37:49
...
import java.util.Arrays;
import java.util.Random;
/**
* 1:按要求完成如下功能
* A 定义方法public static int[] getNums(int[] arr),实现一下功能,获取arr中最小的5个奇数,
* 并按照升序排列后,以数组的方式返回.
* B 定义main方法,要求:
* 1.定义一个长度为50的int数组arr,数组元素为2-199之间的随机数字,包括2和199.
* 2.调用getNums()方法,将数组arr传入,接收返回数组,并将结果打印到控制台.
*/
public class Assign04 {
public static void main(String[] args) {
int[] arr = new int[50];
int[] randomArr = randomArr(arr);
// System.out.println(Arrays.toString(randomArr));
System.out.println(Arrays.toString(getNums(arr)));
}
/**
* 获得数组中最小的五个奇数
* @param arr
* @return
*/
public static int[] getNums(int[] arr) {
Arrays.sort(arr);
int count_odd = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 != 0) {
count_odd++;//获取奇数数组的长度
}
}
int[] Odd = new int[count_odd];
System.out.println(Arrays.toString(arr));
int index=0;//定义索引,不随奇数数组的索引变化而变化
for (int j = 0; j < arr.length; j++) {
if (arr[j]%2!=0) {
Odd[index]=arr[j];
index++;//当元数组元素为奇数是将他赋给奇数数组
//然后奇数数组索引加1
}
}
// for (int i = 0,j=0; i < arr.length; i++) {//将index变成j定义在循环里面也是一样的
// if (arr[i] % 2 != 0) {
// Odd[j] = arr[i];
// j++;
// }
// }
// System.out.println(Arrays.toString(Odd));
int[] ultimate=new int[5];
for (int i = 0; i < 5; i++) {
ultimate[i]=Odd[i];
}
return ultimate;
}
/**
* 获取随机数数组
* @param arr
* @return
*/
public static int[] randomArr(int[] arr) {
Random rd = new Random();
for (int i = 0; i < arr.length; i++) {
arr[i] = rd.nextInt(198) + 2;
}
return arr;
}
}
这道题当时我做的时候,问题出现在没有将新数组和老数组的索引分开,所以获得的奇数元素无法正确的赋给新数组.后来通过同学指导,和自己摸索,定义了一个index.只有当赋值成功的时候,索引再加一,这样就不会冲突了.
上一篇: 请问wordpress中如何获取自定义post_type的分类
下一篇: Android 音量调节