java产生随即数字的问题!!!!在线等!高手进!

import java.util.Random;

public class Demo {
public static void main (String args[]) {
Random rnd = new Random();
int[] nums = new int[9];
for (int i=1; i<10; i++) {
int p = rnd.nextInt(9);
if (nums[p] != 0)
i--;
else
nums[p] = i;
}
for (int i=0; i<9; i++) {
System.out.print(nums[i]);
if (i % 4 == 3)
System.out.println();
}
}
}

这端程序现在是可以产生 1-9 的 2组随即数字的!!切不重复的数字!!
我想要的是 可以一下产生如:
1122
1457
3478
3355
这样一下产生100的4位数字,不知道怎末写了 高手请进,产生的4位数字中不能有重复的数字出现,谢谢在线等高手进!!!!
重复的数字 就是
1122
1122
这样出现2遍的那种!
0001
0005 这样的也是可以的 必须是4位数字!

//完整程序:
import java.util.Random;

public class Demo {
public static void main (String args[]) {
Random rnd = new Random();
int numLength = 9;
int[] nums = new int[numLength];
nums[0] = rnd.nextInt(9999);
mylable: for (int i=0; i<numLength; i++) {
int p = rnd.nextInt(9999);
for (int j=0; j<i;) {
if (p==nums[j]) {
i--;
continue mylable;
}
j++;
if (j==i) {
nums[i]=p;
break;
}
}
}
for (int i=0; i<numLength; i++) {
int dig = (int) Math.log10(nums[i]);
if (dig<3) {
for (int j=1;j<dig;j++) {
System.out.print("0");
}
}
System.out.println(nums[i]);
}
}
}
//其中numLength 是要生成数字的个数,自己定,有不懂的问我!追问

你的已经很接近了
但是我还需要0001的这种数字的 其实就是1-10000中的数字的,如果是1位数字的话 前面就自己加000 组成0001;2位数字的话就是前面加2个00 ,如00 10;有时间么 在你的上面在帮忙改下 谢谢了!!!

追答

import java.util.Random;

public class Demo {
public static void main (String args[]) {
Random rnd = new Random();
int numLength = 9;
int[] nums = new int[numLength];
nums[0] = rnd.nextInt(9999)+1;
mylable: for (int i=0; i<numLength; i++) {
int p = rnd.nextInt(9999)+1;
for (int j=0; j<i;) {
if (p==nums[j]) {
i--;
continue mylable;
}
j++;
if (j==i) {
nums[i]=p;
break;
}
}
}
for (int i=0; i<numLength; i++) {
int dig = (int) Math.log10(nums[i]);
if (dig<3) {
for (int j=1;j<dig;j++) {
System.out.print("0");
}
}
System.out.println(nums[i]);
}
}
}

追问

2位数字的不行的!!

追答

import java.util.Random;

public class Demo {
public static void main (String args[]) {
Random rnd = new Random();
int numLength = 9;
int[] nums = new int[numLength];
nums[0] = rnd.nextInt(9999)+1;
mylable: for (int i=0; i<numLength; i++) {
int p = rnd.nextInt(9999)+1;
for (int j=0; j<i;) {
if (p==nums[j]) {
i--;
continue mylable;
}
j++;
if (j==i) {
nums[i]=p;
break;
}
}
}
for (int i=0; i<numLength; i++) {
int dig = (int) Math.log10(nums[i]);
if (dig<3) {
for (int j=1;j<4-dig;j++) {
System.out.print("0");
}
}
System.out.println(nums[i]);
}
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-16
public static void main(String[] args) {
// TODO Auto-generated method stub
int gewei=(int)(Math.random()*10);//个位(随机产生0-9的一个数)
int shiwei=(int)(Math.random()*10);//十位
int baiwei=(int)(Math.random()*10);//百位
int qianwei=(int)(Math.random()*10);//千位
boolean isOk=false;
while(isOk==false){
if(gewei==shiwei||gewei==baiwei||gewei==qianwei||
shiwei==baiwei||shiwei==qianwei
||baiwei==qianwei){
gewei=(int)(Math.random()*10);
shiwei=(int)(Math.random()*10);
baiwei=(int)(Math.random()*10);
qianwei=(int)(Math.random()*10);
}else{
isOk=true;
}
}
System.out.print(gewei+shiwei*10+baiwei*100+qianwei*1000);
}

不知道是不是你想要的--试试看吧

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网