问题描述
boolean end=false; int s; Random ran=new Random();do{ s=ran.nextInt(9999); if(1000<s && s<9999){end=true; } }while(!end); System.out.println("会员编号:"+s);
解决方案
如果你的四位数字必须大于1000的话,那么你可以这么写:Random random = new Random();//random必须要做为成员变量或者静态变量,不能每次都new一个,否则就不具有随机性了。int s = random.nextInt(9000) + 1000;//这样的话s的范围一定是[1000,9999]如果你不方便把Random类声明成成员变量或者静态变量的话,可以用如下方法: int s = (int) (Math.random() * 9000) + 1000;因为Math类里面会维护一个静态的Random对象。
解决方案二:
楼上的回答都不错。。。
解决方案三:
/** * 产生指定范围内的随机数(仅限非负数) * @param min 最小范围 * @param containMin 是否包括这个最小范围(true:包括;false:不包括) * @param max 最大范围 * @param containMax 是否包括这个最大范围(true:包括;false:不包括) * @return 正常情况:>=0异常情况:-1 */public static int threadLocalRandom(int min,boolean containMin,int max,boolean containMax){if(min<0||max<0){return -1;}if(min>max){max=max^min;min=max^min;max=max^min;}Random random = new Random(); if(containMin==true&&containMax==true){//产生min-max之间的随机数(包括min和max,即[min,max])return random.nextInt(max-min+1)+min;}else if(containMin==true&&containMax==false){//产生min-max之间的随机数(包括min不包括max,即[min,max))return random.nextInt(max-min)+min;}else if(containMin==false&&containMax==false){//产生min-max之间的随机数(不包括min也不包括max,即(min,max))max=max-1;return random.nextInt(max-min)+min+1;}else{//产生min-max之间的随机数(不包括min包括max,即(min,max])min=min+1;return random.nextInt(max-min+1)+min;}}
解决方案四:
Random rand = new Random(); String a="";for(int i=0;i<4;i++){//通过字符串拼接 防止千位上为0;if(i==1&&rand.nextInt(9)==0){a+=(rand.nextInt(9)+1); }a+=rand.nextInt(9);//防止最后一位为0 如1000 你的需求是要大于1000if(i==3&&rand.nextInt(9)==0){a+=(rand.nextInt(9)+1);}} System.out.println(Integer.parseInt(a)); }
解决方案五:
r.nextInt(9000) + 1000其中r.nextInt(9000) 生成任意[0,9000)区间的随机整数,然后再加上1000,保证随机整数范围就是[1000,10000) (ps:方括号手表包括,圆包括表示不包括)
解决方案六:
依赖于apache的common包下的这个类import org.apache.commons.lang3.RandomStringUtilsRandomStringUtils.randomNumeric(4)自动产生4个数字