若要求数组长度为六,给数组元素赋不同的随机值。
- //给一个数组元素赋值,要求每的元素的值不相等。
-
- int[] arr = new int[6];
- arr[0] = (int)(Math.random() * 30) + 1;
- for (int i = 1; i < arr.length; i++)//三层循环,第一层for循环用来给每一个元素赋值随机数
- {
- boolean flag = true;
- while(flag)//若flag是false就赋值完成,是true就重新赋值
- {
- arr[i] = (int)(Math.random() * 30) + 1;//随机数赋值范围1到30
- for (int j = 0; j < i; j++)
- {
- if(arr[j] == arr[i])//若有相等的值,就重新赋值。
- {
- flag = true;//为true时,继续进入while循环重新赋值。
- break;
- }
- flag = false;//如果没有相同的值,就跳出循环,继续下一个元素的赋值。
- }
-
- }
- }
- for (int i = 0; i < arr.length; i++)
- {
- System.out.print(arr[i] + "\t");
- }
1. 若要用随机数表示[a,b)的范围,公式为(int) (Math.random() * (a - b + 1) ) + a,所以赋值范围为一到三十的表示为(int)(Math.random() * 30) + 1。
2.while循环用来赋随机值,条件为flag的原因是,内层的for循环判断有元素相等时,就给flag赋值为true后马上跳出内层for判断,又进入while重新赋值,只有一直不相等,不被赋值为true,才能跳出while循环,不再继续赋随机值。
第一个for循环里i从一开始,arr[ 0 ] 的赋值要放在循环外面的原因是:如果arr[ 0 ]的赋值跟着while来赋值,内层for循环里的j < i将永远不会进入,会一直while死循环。