Буду признателен за несколько советов, чтобы я мог выбрать правильный путь. Я пытаюсь напечатать общие значения из двух массивов int без повторений. Я не могу использовать любые строки, коллекции, дополнительные массивы или манипулировать существующими массивами, и я могу использовать только пакет java.lang.
На данный момент это мой код:
int[] a = { 6, 0, 2, -7, 16, 9, 1, -8, 9, 9, 3, -9, -1, 0, 1, -8, 2, 99 };
int[] b = { 16, 0, 5, 2, -5, 3, 3, 9, 9, 1, -8, -8 };
for (int x : a) {
for (int y : b) {
if(x == y) {
System.out.print(x + " ");
break;
}
}
}
или
int[] a = { 6, 0, 2, -7, 16, 9, 1, -8, 9, 9, 3, -9, -1, 0, 1, -8, 2, 99 };
int[] b = { 16, 0, 5, 2, -5, 3, 3, 9, 9, 1, -8, -8};
int al = a.length;
int bl = b.length;
for (int x = 0; x < al; x++) {
for (int y = 0; y < bl; y++) {
if ( a[x] == b[y] ) {
System.out.print( a[x] + " ");
break;
}
}
}
-Что печатается с моим текущим кодом: 0 2 16 9 1 -8 9 9 3 0 1 -8 2
-Что я хочу напечатать (порядок может отличаться): 0 2 169 1 -8 3
У меня была идея проверить первый массив на наличие дубликатов, используя другой цикл for, и перейти к основному циклу (который проверяет общие элементы), только если он не является дубликатом, но яЯ не уверен, как это сделать или даже выполнимо. Все мои попытки реализовать эту идею пока терпят неудачу.
Я написал фрагмент кода с циклом for, который проверяет наличие дубликатов (но не уверен, что с ним делать):
int[] a = { 6, 0, 2, -7, 16, 9, 1, -8, 9, 9, 3, -9, -1, 0, 1, -8, 2, 99 };
int[] b = { 16, 0, 5, 2, -5, 3, 3, 9, 9, 1, -8, -8};
int al = a.length;
int bl = b.length;
for (int i = 0; i < al; i++) {
for (int j = i+1; j < al ; j++) {
// duplicates exist
if (a[i] == a[j] ) {
// not sure what to put here?
}
}
}
У меня было несколько идей о том, как я могу решить эту проблему, но правилам задач удалось запретить все мои возможные решения, пожалуйста, помогите