我想生成一个(1~9)4位数,4个数字不能一样。我这样的写法还是会生成0和相同的数字,不知道应该怎么改,谢谢各位帮助一下。。
public class number
{ public static void main(String[] args)
{
String z[] = new String [4];
int x;
int a[] = new int[4];
double y;
for(int i=0;i<=3;i++)
{
y=Math.random()*10;
x=(int)y;
a[i] = x;
/*z[i] = String.valueOf(x);*/
if(a[0]==0&&a[0]==a[1]&&a[0]==a[2]&&a[0]==a[3]&&a[1]==a[2]&&a[1]==a[3]&&a[2]==a[3])
{
i=0;
}
else
z[i]= String.valueOf(x);
}
for(int k=0;k<=3;k++)
{
System.out.print(z[k]);
}
}
}
public class number
{ public static void main(String[] args)
{
String z[] = new String [4];
int x;
int a[] = new int[4];
double y;
for(int i=0;i<=3;i++)
{
y=Math.random()*10;
x=(int)y;
a[i] = x;
/*z[i] = String.valueOf(x);*/
if(a[0]==0&&a[0]==a[1]&&a[0]==a[2]&&a[0]==a[3]&&a[1]==a[2]&&a[1]==a[3]&&a[2]==a[3])
{
i=0;
}
else
z[i]= String.valueOf(x);
}
for(int k=0;k<=3;k++)
{
System.out.print(z[k]);
}
}
}
public class RanNumber {
public static void main(String[] args) {
String[] z = new String[4];
for (int i = 0; i < 4; i++) {
int temp = 0;
boolean flag = true;
while (flag) {
temp = (int)(Math.random() * 10);
if (temp == 0)
continue;
flag = false;
for (int j = 0; j < i; j++) {
if (z[j].equals(String.valueOf(temp))) {
flag = true;
break;
}
}
}
z[i] = String.valueOf(temp);
}
for (int i = 0; i < 4; i++)
System.out.print(z[i]);
}
}
有问题
这样的语句存在什么问题
int count = 0;
int value;
Integer inte;
HashMap map = new HashMap();
while(count < 4){
value = (int)(Math.random() * 10);
if(value == 0){
continue;
}
inte = Integer.valueOf(value);
if(!map.containsKey(inte)){
map.put(inte,"");
System.out.println("value is "+value);
count++;
}
}
}
==