数组我们已经学了三天了,但是我发现在做题目时对于该用静态初始化还是动态初始化有点迷茫,所以做了一下强化训练。
我们知道,动态初始化是指定数组的长度,数组内容则由系统自动生成,是用在不清楚储存的数据的情况下。静态初始化是指定数组的数值内容,数组长度由系统自动生成,是用在知道要储存的为多少时的情况下。
例如这道题:
随机生成十个取值范围在1~100的数,并求取他们的平均数
import java.util.*; public class sg2 { public static void main(String[] args) { int [] arr= new int [10]; int count=0; int sum=0; int avg=0; for(int a=0;a<10;a++){//运用for循环生成10个随机数 Random r=new Random(); int number =r.nextInt(100)+1; System.out.println(number); //并将这些随机数存入数组 arr[a]=number; sum=sum+arr[a]; avg=sum/12; } System.out.println(avg); } }
这道题由于要储存的数据是随机生成的数,我们事先不知道,所以应该在生成随机数的循环前用动态初始化定义一个长度为10的数组。
2.将数组{1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}中所有非0的数存进一个新的数组,打印出新的数组
import java.util.*; public class exec1 { public static void main(String[] args) { int arr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}; int n=0; for(int i=0;i<arr.length;i++){ if(arr[i]!=0){ n++; } } int arr1[]=new int[n]; n=0; for(int i=0;i<arr.length;i++){ if(arr[i]!=0){ arr1[n]=arr[i]; n++; } } for(int i=0;i<arr1.length;i++){ System.out.println(arr1[i]); } } }
因为题目中已经给出了数据,所以第一个数组用的是静态初始化,而要新的数组时,我们还没有算出到底有哪些非0数,只能用n来假设非0数的数量,所以只能用动态初始化来定义新的数组。