у меня есть задание программирования, где я поручено следующее:Попытка печати массива без повторения чисел
Я беру два ИНТ значения (х и у) и создание двух различных массивов: первый (размер х) будет печатать массив, начинающийся с x и спускающийся вниз до 1. Второй (размер y) будет принимать случайные значения из первого массива (размер x) и хранить его в своем собственном массиве. Затем я распечатаю второй массив. Однако второй массив не может иметь никаких повторяющихся значений. Например, если массив был размером 10, он не мог иметь две одинаковые цифры в своих 10 отдельных индексах. Я пытаюсь сохранить уникальные элементы во втором массиве, создав два массива, один логический для проверки уникальных элементов, а другой - для хранения этих уникальных элементов. Вот мой код:
/*
* user will enter desired size x for first array labeled arr_1
* arr_1 will contain values descending from x down to 1
* user will enter desired size y for second array labeled arr_2
* arr_2 will contain random values taken from arr_1 w/o repeating numbers
*/
import java.util.Arrays;
// import java.util.Arrays;
import java.util.Random;
// import java.util.Scanner;
public class Prog1B
{
public static void main(String[] args)
{
System.out.println("Program 1B, Christopher Moussa, masc1574");
// Scanner scnr = new Scanner(System.in);
int x = 20;
int v = x;
int[] arr_1 = new int[x];
for (int i = x-1; i >= 0; i--)
{
arr_1[i] = v; // System.out.print(i+1 + " "); prints 20, 19, ... , 1
v--; // System.out.print(arr_1[i] + " "); prints 20, 19, ... , 1
}
// int[] b = unique(arr_1);
System.out.println(Arrays.toString(unique(arr_1)));
}
public static int[] unique (int[] n)
{
boolean[] seen = new boolean[n.length];
int[] unique = new int[n.length];
Random rand = new Random(123L);
for (int i = 0; i < n.length; i++)
{
int index = rand.nextInt(n.length);
while (seen[index])
{
index = rand.nextInt(n.length);
}
unique[i] = n[index];
}
return unique;
}
}
код компилируется и работает, но он по-прежнему печатает массив с повторяющимися значениями. Я пытаюсь написать программу, чтобы она не печатала массив с повторяющимися значениями, а только уникальные значения. Есть ли у вас какие-либо предложения относительно того, где проблема? Я уверен, что он лежит в «уникальном» методе, более конкретно, когда логический массив проверяет уникальные значения (я заметил, что при попытке отладки это, даже если случайный индекс, который он сгенерировал, не был уникальным, он все же пропустил условие while и распечатал его). Я начинающий программист (первокурсник в штате Сан-Диего, изучающий информатику), и любые отзывы/советы будут очень признательны. Большое вам спасибо.
Какова цель o f используя случайные индексы? – diziaq
Почему бы не использовать набор вместо этого? У наборов не может быть дубликатов. – JimLohse
Все это не Чегг, не решайте проблему для Кристофера, ведите его в правильном направлении на http://meta.stackexchange.com/questions/10811/how-do-i-ask-and-answer-homework -questions – JimLohse