JAVA随机输出10个数不重复并且按顺序从小到大排列,用java.lang.Math.random()语句

如题
2024-11-22 13:28:03
推荐回答(1个)
回答(1):

public class text2 {
public static void main(String[] args) {
sort();
}

// 方法体1:用Math.random()方法生成随机整数
private static int createNO() {
// math.random生成的随机数是0~1之间的小数,百倍之后取整
int ran = (int) (100 * Math.random());
return ran;
}

// 方法体2:向random数组中添加十个不同的元素
private static int[] random() {
// 定义十个元素的数组用来存放十个随机数
int random[] = new int[10];
// 定义一个布尔类型的变量flg 当flg为true时,才向输入random中添加元素; 初始化为true;
boolean flg = true;
for (int i = 0; i < 10; i++) {
// while(true)死循环,如果ran的值在random数组中存在,
// 就通过次死循环再一次执行createNO方法更新ran的值,
// 直到符合条件:此次ran的值不同于random数组的每一个元素时,break跳出死循环,执行i循环
while (true) {
// 调用createNO方法,每次循环随机生成一个整数
int ran = createNO();
for (int j = 0; j <= i; j++) {
// 判断random数组中已经存在的元素是否含有本次i循环得到的ran的值
// 如果有,这个“break”是用来跳出j的循环,之后执行死循环,更新ran值
// 同时flg赋值false
if (random[j] == ran) {
flg = false;
break;
}
}
// 当flg为true时,说明random已经存在的元素没有与此次死循环更新得到的ran的值相同,
// 则将ran的值添加进random数组
// 跳出死循环,执行i循环:注:这个break是用来跳出while(true)的死循环的
if (flg == true) {
random[i] = ran;
break;
}

}
}
// 打印出已经添加十个元素的random数组中的每一个元素,但是没有排序
System.out.println("本次数组未排序噢~");
for (int k = 0; k < random.length; k++) {
System.out.println(random[k]);
}
return random;
}

// 方法体3:数组的排序方法:
private static void sort() {
// 调用random()方法获取数组
int sortRandom[] = random();
int p;
// 用传说中的冒泡排序····将未排序的数组按照从小到大的数序排序
for (int i = sortRandom.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (sortRandom[j] > sortRandom[j + 1]) {
p = sortRandom[j];
sortRandom[j] = sortRandom[j + 1];
sortRandom[j +1] = p;
}
}
}
System.out.println("本次数组已经排序了噢··");
for (int i = 0; i < sortRandom.length; i++) {
System.out.println(sortRandom[i]);
}
}
}

运行结果: