随机数组没有重复" Java"

时间:2016-12-25 09:20:04

标签: java arrays random

我需要一个程序,它生成一个随机数组,在Java,单数组"一维"中的元素中没有重复,特别是5个元素。

我试过以下

public class randomArrayNotDublicated {
public static void main(String[] args) {
    int x[] = new int[4];
    for (int i = 0; i < x.length; i++) {
        x[i] = (int) (Math.random() * 10);
        if (x[i] != x[i]) {
            System.out.println(x[i]);
        }/* else if (x[i] == x[i]) {
            System.out.println("ERROR");
        }*/
    }
}

4 个答案:

答案 0 :(得分:1)

您为什么使用new int[4];?在第6行,您将创建包含4个元素的数组。你应该使用这样的代码:

int x[] = new int[5];
int i = 0;
while (i < x.length) {
    x[i] = (int) (Math.random() * 10);
    boolean flag = true;
    for (int j = 0; j < i; j++)
    {
        if (x[j] == x[i])
        {
            flag = false;
            break;
        }
    }
    if (flag)
        i++;
}

此外,您可以使用这样的集合:

Set<Integer> set = new HashSet<>();

while(set.size() < 5) {
    Random rand = new Random();
    int n = rand.nextInt(10);
    set.add(n);
}

修改

此外,您可以使用以下代码:

int x[] = new int[5];
int i = 0;
while (i < x.length) {
    x[i] = (int) (Math.random() * 10);
    for (int j = 0; j < i; j++) {
        if (x[j] == x[i]) {
            i--;
            break;
        }
    }
    i++;
}

您可以使用以下代码将数组打印到控制台:

System.out.println(Arrays.toString(x));

或使用这样的代码(没有准备好的方法):

for (int j = 0; j < x.length - 1; j++)
{
    System.out.print(x[j] + ", ");
}

System.out.println(x[x.length - 1]);

答案 1 :(得分:0)

这是一个获得5个随机整数的代码。您需要使用Set来避免重复。或者您可以手动处理它。但Set是首选的数据结构

import java.util.*;

public class HelloWorld{

     public static void main(String []args){
        int N = 5;
        Set<Integer> set = new HashSet<Integer>();

        while(set.size()<N) {
            Random rand = new Random();
            int n = rand.nextInt(10);
            set.add(n);
        }
        int result[] = new int[N];
        int index = 0;
        for(Integer i : set) {
            result[index++] = i;
            System.out.println(i);
        }
     }
}

答案 2 :(得分:0)

或者您使用List<Integer>对象

List<Integer> list = new ArrayList<Integer>();

答案 3 :(得分:0)

谢谢大家 我终于与你的帮助找到了我的完美答案 这是

public class randomArrayNotDublicated {
public static void main(String[] args) {
    int x[] = new int[5];
    int i, j, k;
    for (i = 0; i < x.length; i++) {
        x[i] = (int) (Math.random() * 10);
        for (j = 0; j < i; j++) {
            if (x[j] == x[i]) {
                i++;//OR "i--;"
            }
        }
    }
    for (k = 0; k < x.length; k++) {
        System.out.println(x[k]);
    }
}

}