我想利用循环来做这程序 我的程序如下
class Rand
{
int n=1;
int a[]=new int[4];
int b;
//产生随机数方法
Rand()
{
//产生第一位大于0的随机数
a[0]=(int)(9*Math.random()+1);
//利用循环产生3个不同的随机数(且与第一个随机数不同
//由a[1]开始循环到a[3],赋随机数
for(int i=1;i<4;i++)
{
a[i]=(int)(10*Math.random());
// 这里是循环判断a[i]与他们前面的每一位是否相同
for(int j=0;j<i;j++)
{
//如果a[i]等于a[j]就重新赋随机值在进入这个循环判断
while(a[i]==a[j])
{
j=0;
a[i]=(int)(10*Math.random());
}
}
}
//在这里每循环一次,n就会 乘以10
for(int i=3;i>=0;i--)
{
b=a[i]*n+b;
n=n*10;
}
}
void Show()
{
System.out.println("随机数是 :"+b);
}
}
class Guess
{
public static void main(String[]args)
{
Rand aa=new Rand();
aa.Show();
}
}
我已经测试过这个程序,运行10次就大概有2次会有一个两位重复的数字 出错的数字是:9242,9596,2040……
希望大家能帮我改正这个程序!谢谢!
class Rand
{
int n=1;
int a[]=new int[4];
int b;
//产生随机数方法
Rand()
{
//产生第一位大于0的随机数
a[0]=(int)(9*Math.random()+1);
//利用循环产生3个不同的随机数(且与第一个随机数不同
//由a[1]开始循环到a[3],赋随机数
for(int i=1;i<4;i++)
{
a[i]=(int)(10*Math.random());
// 这里是循环判断a[i]与他们前面的每一位是否相同
for(int j=0;j<i;j++)
{
//如果a[i]等于a[j]就重新赋随机值在进入这个循环判断
while(a[i]==a[j])
{
j=0;
a[i]=(int)(10*Math.random());
}
}
}
//在这里每循环一次,n就会 乘以10
for(int i=3;i>=0;i--)
{
b=a[i]*n+b;
n=n*10;
}
}
void Show()
{
System.out.println("随机数是 :"+b);
}
}
class Guess
{
public static void main(String[]args)
{
Rand aa=new Rand();
aa.Show();
}
}
我已经测试过这个程序,运行10次就大概有2次会有一个两位重复的数字 出错的数字是:9242,9596,2040……
希望大家能帮我改正这个程序!谢谢!
String number = "";
Random rd = new Random();
while (number.length() != 4) {
String rn = rd.nextInt(10) + "";
if (number.indexOf(rn) == -1)
number += rn;
}
System.out.println(number);
}
这是我之前的程序
class Rand
{
int n=1;
int a[]=new int[4];
int b;
//产生随机数方法
Rand()
{
//产生第一位大于0的随机数
a[0]=(int)(9*Math.random()+1);
//利用循环产生3个不同的随机数(且与第一个随机数不同
//由a[1]开始循环到a[3],赋随机数
for(int i=1;i <4;i++)
{
a[i]=(int)(10*Math.random());
// 这里是循环判断a[i]与他们前面的每一位是否相同
for(int j=0;j <i;j++)
{
//如果a[i]等于a[j]就重新赋随机值在进入这个循环判断
while(a[i]==a[j])
{
// j=0;
a[i]=(int)(10*Math.random());
}
}
}
//在这里每循环一次,n就会 乘以10
for(int i=3;i> =0;i--)
{
b=a[i]*n+b;
n=n*10;
}
}
void Show()
{
System.out.println("随机数是 :"+b);
}
}
class Guess
{
public static void main(String[]args)
{
Rand aa=new Rand();
aa.Show();
}
} 少了一个 j=0不好意思,这个程序是改好的,我忘了编译, 我运行的是我之前错误的类。
犯了一个很低级的错误,呵呵。