意思就是说:给出一个大小为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为循环的次数!
第三:增强for循环
Java里面引入了增强for循环,这样的for循环的坏处是:这个for循环内只能做读操作,不可以写入,也就是说这个for循环内只能对数据进行输出而不能进行访问和修改!语法格式是:
for(Type ele : array)
System.out.println(ele);
注意这个ele才是遍历数组的数值,输出的也是ele,而不是array[ele]!!
第四:以continue后面加标签代替c++的goto语句!
上述代码中我们使用了continue后面加标签的形式,这个标签要先声明,表示满足continue条件后需要到达的位置!这里很明显我们遇到了重复值是需要重新进入循环的,于是我们的标签就放在循环的签名,注意声明标签的后面加冒号!