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的话,那么你可以这么写:
[code="java"]Random random = new Random();
//random必须要做为成员变量或者静态变量,不能每次都new一个,否则就不具有随机性了。
int s = random.nextInt(9000) + 1000;
//这样的话s的范围一定是[1000,9999][/code]
如果你不方便把Random类声明成成员变量或者静态变量的话,可以用如下方法:
[code="java"] int s = (int) (Math.random() * 9000) + 1000;[/code]
因为Math类里面会维护一个静态的Random对象。
[code="java"]
依赖于apache的common包下的这个类
import org.apache.commons.lang3.RandomStringUtils
RandomStringUtils.randomNumeric(4)
自动产生4个数字
[/code]
r.nextInt(9000) + 1000
其中r.nextInt(9000) 生成任意[0,9000)区间的随机整数,然后再加上1000,保证随机整数范围就是[1000,10000)
(ps:方括号手表包括,圆包括表示不包括)
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 你的需求是要大于1000
if(i==3&&rand.nextInt(9)==0){
a+=(rand.nextInt(9)+1);
}
}
System.out.println(Integer.parseInt(a));
}
[code="java"]
/**
* 产生指定范围内的随机数(仅限非负数)
* @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 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;
}
}
[/code]
楼上的回答都不错。。。