我需要一个程序,它生成一个随机数组,在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");
}*/
}
}
答案 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]);
}
}
}