帮我写个程序最好有注释谢谢

定义一个长度为20的数组,元素为20-40的随机数, 要求判断指定元素在数组中出现的次数,指定元素为键盘录入范围为20-40之间。

package gz.ht.edu;

import java.util.Random;
import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		//定义长度为20的整型数组
		int arr[]=new int[20];
		//实例化随机数对象
		Random r = new Random(1);
		int max=40;
		int min=20;
		//动态给数组赋值
		for(int i=0;i<20;i++){
			//随机生成20-40的随机数
			int num = r.nextInt(40)% (max - min + 1) + min;
			//给数组赋值
			arr[i]=num;
		}
		//实例化输入对象
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一个20-40之间的整数:");
		//获取键盘输入
		int num=sc.nextInt();
		//定义计数变量
		int cnt=0;
		//遍历数组,找出该数出现的次数
		for(int i=0;i<20;i++){
			System.out.print(arr[i]+"  ");
			//如果数组中元素与该值相等,累加计数变量
			if(arr[i]==num){
				cnt++;
			}
		}
		System.out.println("\n数组中一共出现了"+cnt+"个"+num);
	}
}