java中如何产生一个16位数字组成的随机字符串?谢谢各位了

如题所述

方法如下:

Random ran=new random();

boolean flag=true;

while(flag){ 

int a=ran.nextInt(99999999); 

int b=ran.nextInt(99999999);

long c=a*100000000L+b; 

if(c>1000000000000000L&&c<9999999999999999L){

flag=false;
c1=c;
String num=String.valueOf(c1); 

Java生成随机字符串的两种方式:

1、生成的字符串每个位置都有可能是str中的一个字母或数字,需要导入的包是import java.util.Random;

//length用户要求产生字符串的长度。

public static String getRandomString(int length){

String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

Random random=new Random();

StringBuffer sb=new StringBuffer();

for(int i=0;i<length;i++){

int number=random.nextInt(62);

sb.append(str.charAt(number));

}

return sb.toString();

}

2、可以指定某个位置是a-z、A-Z或是0-9,需要导入的包是import java.util.Random;

//可以指定字符串的某个位置是什么范围的值。

public static String getRandomString2(int length){

Random random=new Random();

StringBuffer sb=new StringBuffer();

for(int i=0;i<length;i++){

int number=random.nextInt(3);

long result=0;

switch(number){

case 0:

result=Math.round(Math.random()*25+65);

sb.append(String.valueOf((char)result));

break;

case 1:

result=Math.round(Math.random()*25+97);

sb.append(String.valueOf((char)result));

break;

case 2:    

sb.append(String.valueOf(new Random().nextInt(10)));

break;

}

}

return sb.toString();

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
Random ran=new random();
int a=ran.nextInt(99999999);
int b=ran.nextInt(99999999);
long l=a*10000000L+b;
String num=String.valueOf(l);
这个num就是16位数字的随机字符串
random是jre自带的的方法,直接ctrl+alt+o导入就可以了追问

为什么运行总说找不到Random类,是要导入什么包吗?

谢谢了

追答

ctrl shift o说错了,是这个快捷键

ctrl shift o说错了,是这个快捷键

追问

?什么意思

追答

我ctrl+shift+o就可以导入random包了,如果可以运行就采纳吧

追问

追答

你把你代码发上来看下,或者直接在你的main方法上加一行 import java.util.Random,如果你还是报错,那就是你没有装jdk或者没有配置环境变量了

追问

好了。。

但是只有15位随机数。。。

谢谢了,我一定会给你采纳的如果解决了问题

追答

Random ran=new random();
boolean flag=true;
while(flag){
int a=ran.nextInt(99999999);
int b=ran.nextInt(99999999);
long c=a*100000000L+b;
if(c>1000000000000000L&&c<9999999999999999L){
flag=false;
c1=c;
String num=String.valueOf(c1);
}

上午没时间测试,中午再重新看了下,这个num每次生成的都是16位了

追问

谢谢,你基本解决了我的问题。

本回答被提问者采纳
第2个回答  2016-11-26
Random r = new Random();
string str = r.Next(10000000,99999999).ToString() + r.Next(10000000,99999999).ToString();追问

Random这个类需要导入什么包吗

第3个回答  2016-11-26
import java.util.Random;
public class Test {
public static StringBuilder random16() {
StringBuilder s = new StringBuilder();
Random random = new Random();
Integer ints;
for (int i = 0; i < 4 ; i++) {
ints = (random.nextInt(10000)+100000)%10000;
// System.out.println(ints.toString());
s.append(ints.toString());
}
return s;
}
public static void main(String[] args) {
System.out.println(random16());
}
}
相似回答