Как вывести одинаковые числа из ранее определенных двух разных целочисленных массивов - PullRequest
0 голосов
/ 25 марта 2019

Мне нужно написать программу, которая определяет два массива int и печатает все элементы первого массива, которые не появляются во втором, но каждое значение только один раз, без повторений (порядок печатных значенийне имеет значения).Например, для массивов:

int[] arr = { 4, 3, 4, 3, 6, 7, 4, 8, 2, 9 };
int[] brr = { 2, 3, 6, 8, 1, 5 };

Результат должен быть следующим:

7 4 9

Он использует только пакет java.lang. и не может создавать массивы, коллекции или строки.

Ответы [ 5 ]

2 голосов
/ 25 марта 2019

Это печатает все элементы первого массива, которые не появляются во втором, теперь вам просто нужно проверить повторы.

public static void compareArrays(int[] arr1, int[] arr2) {
  boolean equal = false;
  int[] printed = null;
  for (int i = 0; i < arr1.length; i++) {
    for (int x = 0; x < arr2.length; x++) {
      if (arr1[i] == arr2[x]) {
        equal = true;
        break;
      } else {
        equal = false;
      }
    }
    if (equal != true) {
      System.out.println(arr1[i]);
    }
  }
}
public static void main(String[] args) {
  int[] arr = { 4, 3, 4, 3, 6, 7, 4, 8, 2, 9 };
  int[] brr = { 2, 3, 6, 8, 1, 5 };
  compareArrays(arr, brr);
}
1 голос
/ 25 марта 2019

Попробуйте использовать это вместо:

String[] unique = new HashSet<String>(Arrays.asList(arr)).toArray(new String[0]);

for (int uEach : unique) {
  for (int bEach : brr) {
    if (unique[uEach] == brr[bEach]) {
       ArrayUtils.removeElement(unique, uEach);
    }
  }
};

System.out.print(unique);
1 голос
/ 25 марта 2019

Я дам вам несколько советов, но не предоставлю никакого кода, поскольку я не видел никаких попыток с вашей стороны.Вы можете решить эту проблему несколькими способами, посмотреть и попытаться реализовать это самостоятельно.В процессе вы узнаете гораздо больше, чем если бы кто-то дал вам полный полный код ответа.Итак, вот так:

Первый метод:

  1. Создайте новый ArrayList, в котором будут храниться ваши выходные данные.
  2. Итерируйте по первому массиву,перебрать второй массив.Сравните каждое значение.
  3. Если значение отсутствует и отсутствует в списке вывода (вам необходимо проверить это специально, чтобы не повторять значения), затем добавьте его в список вывода.
  4. Печать списка вывода.

Второй метод:

  1. Преобразование обоих массивов в ArrayList.

  2. Используйте метод removeAll () , предоставленный со списками, чтобы получить разницу между массивами.Это будет сохранено в одном из списков, которые вы создали ранее.

  3. Удаление повторяющихся элементов из списка (например, с помощью потоков).

Третий метод:

  1. Создайте новый ArrayList, в котором будут храниться ваши выходные данные.

  2. Итерация по значениям массива 1.

  3. Инициализируйте логическую переменную (например, назовите ее contains), которая определит, присутствует ли значение из массива1 в массиве 2, используя IntStream .

  4. Создать оператор if - если contains равно true, добавить значение в список вывода.Убедитесь, что ваш выходной список уже не имеет значения и добавьте его, только если его нет.Распечатайте список вывода.

0 голосов
/ 25 марта 2019
static void findMissing(int a[], int b[]) {
  for (int i = 0; i < a.length; i++) {
    int j;
    for (j = 0; j < b.length; j++) {
      if (a[i] == b[j]) {
        break;
      }
    }
    if (j == b.length) {
      System.out.print(a[i] + " ");
    }
  }
}
0 голосов
/ 25 марта 2019

Вы можете использовать, чтобы получить удаленное значение из массива:

int[] unique = Arrays.stream(arr).distinct().toArray(); 

Затем зациклите оба массива и сопоставьте строки, если они не найдены, выведите:

int i, j, occ;
int[] arr = { 4, 3, 4, 3, 6, 7, 4, 8, 2, 9 };
int[] brr = { 2, 3, 6, 8, 1, 5 };
arr = Arrays.stream(arr).distinct().toArray();
for (i = 0; i < arr.length; i++) {
  occ = 0;
  for (j = 0; j < brr.length; j++) {
    if (arr[i] == brr[j]) {
      occ++;
    }
  }
  if (occ == 0) {
    System.out.println(arr[i]);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...