Проверка рандомно сгенерированных элементов в массиве на совершенные - Java

У меня есть класс TablicaLiczb в котором есть несколько метод,
с помощью метода do_tablicy я заполняю массив рандомными элементами, а с
помощью метода wypisz я выписываю созданный массив в консоль.
Метод doskonala проверяет переданное число в параметре на совершенное число

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

Вот мой код:

public class Main {

    public static void main(String[] args) {
        TablicaLiczb tablicaLiczb = new TablicaLiczb(5);
        tablicaLiczb.do_tablicy();
        tablicaLiczb.wypisz();
        tablicaLiczb.doskonala(6);
    }
}
public class TablicaLiczb {
    private int liczbaElementow;
    private int[] tablica;
    private int max = 0;
    private int min = 0;

    public TablicaLiczb(int liczbaElementow) {
        this.liczbaElementow = liczbaElementow;
        tablica = new int[liczbaElementow];
    }

    public int random(int max, int min) {
        this.max = max;
        this.min = min;
        max -= min;
        return (int) (Math.random() * ++max) + min;
    }

    public void do_tablicy() {
        for (int i = 0; i < tablica.length; i++)
            tablica[i] = random(1, 1000);
    }

    public void wypisz() {
        for (int i = 0; i < tablica.length; i++)
            System.out.print(tablica[i] + "\t");
    }

    public void doskonala(int doskonala) {
        int sum = 0;
        for (int i = 1; i < doskonala; i++) {
            if (doskonala % i == 0)
                sum = sum + i;
        }
        if (sum == doskonala)
            System.out.print("\nLiczba " + doskonala + " jest doskonala\n");
        else
            System.out.print("\nLiczba " + doskonala + " nie jest doskonala\n");
    }
}

Ответы (1 шт):

Автор решения: Roman Konoval

Сделайте, чтоб функция doskonala отвечала только за проверку, и не печатала сама ничего.

public boolean doskonala(int doskonala) {
    int sum = 0;
    for (int i = 1; i < doskonala; i++) {
        if (doskonala % i == 0)
            sum = sum + i;
    }
    return sum == doskonala;
}

Теперь ее можно использовать в других:

public List<Integer> getAllPerfect() {
  List<Integer> result = new ArrayList<>();
  for (int i = 0; i < tablica.length; i++) {
     if (doskonala(tablica[i])) {
         result.add(tablica[i]));
     }
  }
  return result;
}

public void printAllPerfect() {
   List<Integer> allPerfect = getAllPerfect();
   if (allPerfect.isEmpty()) {
     System.out.println("No perfect");
   } else {
     for(Integer perfect: allPerfect) {
       System.out.println(String.format('Perfect: %d', perfect));
     }
   }
}
→ Ссылка