Java随机数&&数组的解析

随机数 数组

1.随机数
Random是随机数的关键字
格式是:
导包 import java.util.Random;
Random 变量名1 = new Random ();
变量类型 变量名2 =变量名1.next变量类型();

// An highlighted block
例如:
Random  ran = new Random();
int  num = ran.nextInt();

2.数组
数组是存储同一种数据类型多个元素的容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。

数组的创建分为几步
创建数组然后初始化之后才可以使用。
初始化是指对数组中的元素分配内存空间,并为每个数组元素赋值。
格式为:
数据类型 [ ] 数组名 = new 数据类型 [ 数组长度]

// An highlighted block
例如:
/***定义一个名字为arr 长度为3的数组***/
int[] arr = new int[3];
/*
		 * 左边:
		 * 		int:说明数组中的元素的数据类型是int类型
		 * 		[]:说明这是一个数组
		 * 		arr:是数组的名称
		 * 右边:
		 * 		new:为数组分配内存空间
		 * 		int:说明数组中的元素的数据类型是int类型
		 * 		[]:说明这是一个数组
		 * 		3:数组的长度,其实就是数组中的元素个数
		 */`

数组在java内存中的 图解Java随机数&&数组的解析_第1张图片

数组的遍历

1.一维数组的遍历

  • 数组遍历(依次输出数组中的每一个元素)
  • 获取数组中元素的个数:数组名.length
    例如:
// An highlighted block
int [] arr = new int [3]
arr[0]=1;
arr[1]=2;
arr[1]=2;

/遍历
有道循环
for (int i =0;i<arr.length;i++){
        System.out.println(arr[]);
}

二维数组

1.二维数组的定义
数据类型[ ][ ] 变量名 = new 数据类型[m][n];

二维数组的遍历

// An highlighted block
例如:
int [ ] [ ] arr1 = new [2] [ 2];
arr[0][0] = 1;
arr[0][1] = 1;
arr[1][0] = 1;
arr[1][1] = 1;
for( int i=1;i<=length;i++){
   for{int j = 0; j<arr[i].length;j++}{
                     System.out.println(arr1[i][j]);
            }
}

练习题及答案详解

// An highlighted block
第一题:分析以下需求,并用代码实现
	1.键盘录入班级人数 
	2.根据录入的班级人数创建数组 //
	3.利用随机数产生0-100的成绩(包含0100)
	4.要求:
		(1)打印该班级的不及格人数
		(2)打印该班级的平均分
		(3)演示格式如下:
			请输入班级人数:
			键盘录入:100
			控制台输出:
				不及格人数:19
				班级平均分:87
				public class Demo2 {
	public static void main(String[] args) {
		Scanner san = new Scanner(System.in);
		System.out.println("请输入人数:\n");
		Random ran = new Random();

		int num = san.nextInt();
		int[] arr = new int[num];
		int count = 0;
		int sum=0;
		for (int i = 0; i < arr.length; i++) {
			int grade = ran.nextInt(101);
			arr[i]=grade;
			sum+=grade;
			if (grade< 60) {
				count++;
				
			}

		}System.out.println("不及格人数"+count);
		System.out.println("平均成绩为:"+(sum/num));

	}

}
	
第二题:分析以下需求,并用代码实现
	1.基础班考试要进行分组,键盘录入该班级总共多少组?以及每组的学生数量?
	2.根据录入的组数及每组学员的数量创建二维数组
	3.利用随机数产生0-100的成绩(包含0100)
	4.要求:
		(1)打印该班级中每组的不及格人数
		(2)打印该班级中每组的平均分
		(3)打印组的最高平均分
		(4)打印班级中的不及格人数
		(5)打印班级平均分
		(6)演示格式如下:
			请输入班级总组数:3
			请输入班级中每组的人数:10
			控制台输出:1组不及格人数为: 6 人
				第1组平均分为: 522组不及格人数为: 7 人
				第2组平均分为: 463组不及格人数为: 3 人
				第3组平均分为: 69
				班级中单组最高平均分为:69
				班级中不及格人数为: 16 人
				班级总平均分为: 56
				public class Demo3 {

	public static void main(String[] args) {
		Scanner scn = new Scanner(System.in);
		System.out.println("请输入组数:");
		int zhu = scn.nextInt();
		System.out.println("请输入每组人数:");
		int ren = scn.nextInt();

		Random ran = new Random();

		int[][] arr = new int[zhu][ren];
/*
 * 班级平均成绩为  总成绩/总人数
 */
		int z_sum = 0;// 班级总成绩和
		int z_num = 0;// 班级总人数
		int z_pj = 0;// 班级总平均分
		
		int z_count = 0;//总不及格人数
		
		int max = 0;// 班级中单组平均数最大
		for (int i = 1; i <=arr.length; i++) {
			/*
			 * 对单个组进行初始化
			 */
			int count = 0;//单组不及格人数
			int sum = 0;//单组总成绩
			int pj = 0;//单组平均分

			for (int j = 0; j <ren; j++) {
				int grade = ran.nextInt(101);

				arr[i - 1][j] = grade;
				if (arr[i - 1][j] < 60) {
					count++;// 每组不及格人数
					z_count++;// 总不及格人数
				}
				
				sum += grade;   //本组总成绩
				z_sum += grade; //全班总成绩
				pj = sum / ren; //本组平均成绩
				z_num++;
                  System.out.print (arr[i-1][j]+" ");//本组成绩 输出
			}
			/*
			 * 判断每一组的平均成绩的大小
			 * 若小于下一组的成绩自动覆盖否者继续循环
			 */
			if(max<pj) {
				max=pj;
			}
			//
			System.out.println(" ");
			System.out.println("第" + i + "组不及格人数为:" + count + "人");
			//System.out.println("第"+i+"组的总分和"+sum);
			System.out.println("第" + i + "组的平均分:" + (sum / ren));
            
		}
		z_pj=z_sum/z_num;
		System.out.println("------------------------------");
		System.out.println("班级中单组最高平均分为:"+max);
		System.out.println("班级中不及格人数为:"+z_count);
		System.out.println("班级总平均分为:"+z_pj);
		

	}
}

第三题:看程序说结果,请不要提前运行?

	public class Test03_01 {
		public static void main(String[] args) {
			int[] arr1 = {1,2,3,4,5};
			int[] temp1 = arr1;
			int[] temp2 = arr1;
			System.out.println("通过temp1取出数组值: ");
			
			for(int i = 0;i<temp1.length;i++) {
				System.out.print(temp1[i]+" ");
			}
			System.out.println();
			System.out.println("通过temp2取出数组值: ");
			for(int i = 0;i<temp2.length;i++) {
				System.out.print(temp2[i]+" ");
			}
			System.out.println();
			temp1[2] = 9;
			
			System.out.println("通过temp1取出数组值: ");
			for(int i = 0;i<temp1.length;i++) {
				System.out.print(temp1[i]+" ");
			}
			System.out.println();
			System.out.println("通过temp2取出数组值: ");
			for(int i = 0;i<temp2.length;i++) {
				System.out.print(temp2[i]+" ");
			}
			System.out.println();
			
		}
	}
	
	public class Test03_02 {
		public static void main(String[] args) {
			int[] arr1 = {1,2,3,4,5};
			int[] arr2 = {5,6,7};
			int[] temp = arr1;
			
			System.out.println("通过temp取出arr1中的元素: ");
			
			for(int i = 0;i<temp.length;i++) {
				System.out.print(temp[i]+" ");
			}
			
			temp = arr2;
			
			System.out.println("通过temp取出arr2中的元素: ");
			
			for(int i = 0;i<temp.length;i++) {
				System.out.print(temp[i]+" ");
			}
			
		}
	}


	

	

你可能感兴趣的:(javase)