意思就是说:给出一个大小为7的数组,要求这个数组的每一个元素都是互不相同的,分布在[1, 36]的随机数,并且要求使用增强for循环输出这个数组。
import java.math.*; @SuppressWarnings("unused") public class Main3 { public static void main(String[] args) { int[] ele = new int[7]; for(int i = 0;i < ele.length;++i) { Here: while(true) { int Temp = (int)(Math.random() * 36.0) + 1; for(int j = 0;j < i;++j) if(Temp == ele[j]) continue Here; ele[i] = Temp; break; } } for(int num : ele) System.out.print(num + " "); } }
数组是一个引用数据类型,所谓引用数据类型,就是说数组的每一个元素实际上都只是一个地址(作为变量放在栈区),这个地址指向一个对象实体(这个实体放在堆区)。然后我们无论是声明怎样数据类型的数组,都采用new的方式动态声明,但是初始化是可以动态也可静态的。这样声明的数组如果没有赋予初值,就遵守这样的规则:如果是普通数据类型的数组,就初始化为0,对象数据类型的数组就初始化为NULL。
因为数组是一个引用类型,这就说明数组本身也是一个对象,所以数组的属性不光有数组的元素值(指向实体的地址),还有别的属性,比如:length!这个属性很好用,在数组声明的时候,会根据数组声明时候开辟了多大的空间而自动初始化属性值length。
然后在遍历的时候就可以以属性length为循环的次数!
Java里面引入了增强for循环,这样的for循环的坏处是:这个for循环内只能做读操作,不可以写入,也就是说这个for循环内只能对数据进行输出而不能进行访问和修改!语法格式是:
for(Type ele : array) System.out.println(ele);
注意这个ele才是遍历数组的数值,输出的也是ele,而不是array[ele]!!
上述代码中我们使用了continue后面加标签的形式,这个标签要先声明,表示满足continue条件后需要到达的位置!这里很明显我们遇到了重复值是需要重新进入循环的,于是我们的标签就放在循环的签名,注意声明标签的后面加冒号!