Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package number.set;
- import java.util.Arrays;
- import java.util.Random;
- public class NumberSet {
- private static int MAX_SIZE = 100;
- private int[] nSet = new int[MAX_SIZE];
- private int size;
- private int max;
- private int min;
- public NumberSet(int min, int max) {
- this.size = 0;
- this.min = min;
- this.max = max;
- }
- /*
- * Metoda dodaje liczbę do zbioru liczb (zezwalamy na dodawanie tej samej)
- * @param i - liczba którą dodajemy
- * @throws Exception - w przypadku przepełnienia zbioru
- */
- public void add(int i) throws Exception {
- assert(this.size >= 0): "Rozmiar zbioru mniejszy od 0... coś poszło nie tak";
- if(this.size == this.MAX_SIZE) {
- throw new Exception("Zbiór przepełniony");
- }
- assert (i >= this.min && i <= this.max) : "Podana liczba jest spoza zakresu";
- this.nSet[this.size++] = i;
- }
- /*
- * Metoda usuwa liczbę ze zbioru (wszystkie wystąpienia)
- * @param i - liczba do usunięcia
- * @throws Exception - w przypadku gdy zbiór nie ma takiej liczby
- */
- public void remove(int i) throws Exception {
- assert(this.size >= 0): "Rozmiar zbioru mniejszy od 0... coś poszło nie tak";
- assert (i >= this.min && i <= this.max) : "Podana liczba jest spoza zakresu";
- int[] arrayBefore = this.nSet;
- this.nSet = Arrays.stream(this.nSet).filter(val -> val != i).toArray();
- if(Arrays.equals(arrayBefore, this.nSet)) {
- throw new Exception("W zbiorze nie ma takiej liczby");
- }
- }
- /*
- * Metoda losuje jedną liczbę ze zbioru i ją usuwa
- * @return wylosowana liczba
- * @throws Exception - występuje jeśli zbiór jest pusty
- */
- public int getRandomValue() throws Exception {
- assert(this.size >= 0): "Rozmiar zbioru mniejszy od 0... coś poszło nie tak";
- if(this.size == 0) {
- throw new Exception("Zbiór jest pusty");
- }
- Random randomGenerator = new Random();
- int randomInt = randomGenerator.nextInt(this.size);
- assert(randomInt >= 0 && randomInt < this.size) : "Wygenerowany liczbę spoza zakresu";
- int toReturn = this.nSet[randomInt];
- this.nSet[randomInt] = this.nSet[--size];
- return toReturn;
- }
- /*
- * Metoda zwraca sumę elementów
- * @return suma
- * @throws Exception - w przypadku jeśli zbiór jest pusty
- */
- public int getSumOfElements() throws Exception {
- assert(this.size >= 0): "Rozmiar zbioru mniejszy od 0... coś poszło nie tak";
- if(this.size == 0) {
- throw new Exception("Zbiór jest pusty");
- }
- int sum = 0;
- for(int j = 0; j < this.size; j++) {
- sum += this.nSet[j];
- }
- return sum;
- }
- /*
- * Metoda dzieli każdy element zbioru przez podaną wartość bez reszty
- * @param d - liczba przez którą dzielimy
- * @throws Exception - gdy dzielimy przez 0
- */
- public void divideAllElementsBy(int d) throws Exception {
- assert(this.size >= 0): "Rozmiar zbioru mniejszy od 0... coś poszło nie tak";
- assert(d != 0) : "Nie można dzielić przez zero!";
- for(int j = 0; j < this.size; j++) {
- assert( this.nSet[j] % d == 0) : "Nie można podzielić całego zbioru bez reszty";
- }
- for(int j = 0; j < this.size; j++) {
- this.nSet[j] /= d;
- }
- }
- /*
- * Metoda sprawdza czy w zbiorze jest podany element
- * @param i - element do sprawdzenia
- * @return true gdy odnaleziono
- * false gdy nie ma
- */
- public boolean contains(int i) {
- assert(this.size >= 0): "Rozmiar zbioru mniejszy od 0... coś poszło nie tak";
- assert (i >= this.min && i <= this.max) : "Podana liczba jest spoza zakresu";
- for(int j = 0; j < this.size; j++) {
- if(this.nSet[j] == i) {
- return true;
- }
- }
- return false;
- }
- /*
- * Metoda zwraca rozmiar zbioru
- * @return rozmiar
- */
- public int getSize() {
- assert(this.size >= 0): "Rozmiar zbioru mniejszy od 0... coś poszło nie tak";
- return this.size;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement