Прежде всего, оператор "else if
" неверен, поскольку вы не предоставляете никаких условий для if (если вы хотите if, вам нужно написать "if (condition) ...
").
Во-вторых, вы не можете решить внутри внутреннего цикла , нужно ли печатать значение: как работает ваш код, вы пишете массив значений [i] для каждого массива значений [j] , что отличается от массива [i]!
В-третьих: внутренний цикл должен только перейти от 0 к внешнему индексу i-1
: Для каждого элемента вам нужно только решить, является ли это первым вхождением (то есть, произошло ли то же значение в любом предыдущем индексе или не). Если это так, распечатайте его, если нет, игнорируйте его.
Правильная реализация CheckDuplicate()
будет:
public static void checkDuplicate(int array []) {
for (int i = 0; i < array.length; i++) {
boolean found = false;
for (int j = 0; j < i; j++)
if (array[i] == array[j]) {
found = true;
break;
}
if (!found)
System.out.println(array[i]);
}
}
Но, конечно, какой-то Set
будет гораздо эффективнее для больших массивов ...
EDIT: Конечно, mmyers (см. Комментарии) правы, говоря, что, поскольку CheckDuplicate()
не возвращает никакого значения, он должен иметь тип возврата void
(вместо int
). ). Я исправил это в приведенном выше коде ...