一、先看这样一个有趣的题目:
1、设计一个密码的自动生成器:密码由大写字母/小写字母/数字组成,生成六位随机密码。
2、分别以1、2、3作为种子数创建Random对象,生成六位随机密码进行测试。
问题答案核心代码如下:
import java.util.Random;
import java.util.Scanner;
public class RandomTest {
public static void main(String[] args) { // 定义一个字符型数组用来存放密码数据随机取值的内容 char[] pardStore = new char[62]; // 把所有的大写字母放进去 char beg = 'A'; for(int i=0;i<=25;i++) { pardStore[i]=beg; beg=(char)(beg+1);//因为相加所以数据类型会自动转换为int型,所以要强制转换为char型不然不匹配 } // 把所有的小写字母放进去 char beg1 = 'a'; for(int i=26;i<=51;i++) { pardStore[i]=beg1; beg1=(char)(beg1+1); } // 把0到9放进去 char beg2 = '0'; for(int i=52;i<=61;i++) { pardStore[i]=beg2; beg2=(char)(beg2+1); } // 分别以1、2、3作为种子数 生成6位随机密码 Scanner sc = new Scanner(System.in); int seed = sc.nextInt();//到时候seed等同于输入的数字1,2,3作为种子数 Random random = new Random(seed); for(int i=1 ; i<=6;i++) { int n =random.nextInt(62);//随机生成一个整数,这个整数的范围就是[0,62) System.out.print(pardStore[n]); } }
二、nextInt()用法总结和思考
1、nextInt()用法:
会随机生成一个整数,这个整数的范围就是int类型的范围-2^31 ~ 2^31-1,但是如果在nextInt()括号中加入一个整数a那么,这个随机生成的随机数范围就变成[0,a)。
2、在题目给定数组时如何运用nextInt():
上面提出的有趣题目是给定我们一个数组并且用来存放密码的组成元素,在这种给定我们已知的密码组成范围以及用数组来包括并且非同一组成的连续数据时,我们可以借鉴上面的问题答案代码
for(int i=1 ; i<=6;i++)//六位数密码所以循环输出六次 { int n =random.nextInt(62);//随机生成一个整数,这个整数的范围就是[0,62) System.out.print(pardStore[n]);//每次生成的整数n用pardStore[n]来代表一个数组中的数据 }
3、多多练习,灵活变动!
还有很多内容需要不断练习才能真正掌握,所以要多看多学多练~