我想生成一个(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]);
}
}
}

解决方案 »

  1.   

    //我写的这段,应该能满足你的要求
    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]);
    }
    }
      

  2.   

    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])
    有问题
      

  3.   

    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])
    这样的语句存在什么问题
      

  4.   

    public static void main(String[] args) {
    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++;
    }
    }
    }
      

  5.   

    if(a[0]==0||(你的其它条件))
              ==