Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.78 KB | None | 0 0
  1. package number.set;
  2.  
  3. import java.util.Arrays;
  4. import java.util.Random;
  5.  
  6. public class NumberSet {
  7.    
  8.     private static int MAX_SIZE = 100;
  9.     private int[] nSet = new int[MAX_SIZE];
  10.     private int size;
  11.     private int max;
  12.     private int min;
  13.    
  14.     public NumberSet(int min, int max) {
  15.         this.size = 0;
  16.         this.min = min;
  17.         this.max = max;
  18.     }
  19.     /*
  20.      * Metoda dodaje liczbę do zbioru liczb (zezwalamy na dodawanie tej samej)
  21.      * @param i - liczba którą dodajemy
  22.      * @throws Exception - w przypadku przepełnienia zbioru
  23.      */
  24.     public void add(int i) throws Exception {
  25.         assert(this.size >= 0): "Rozmiar zbioru mniejszy od 0... coś poszło nie tak";
  26.         if(this.size == this.MAX_SIZE) {
  27.             throw new Exception("Zbiór przepełniony");
  28.         }
  29.         assert (i >= this.min && i <= this.max) : "Podana liczba jest spoza zakresu";
  30.         this.nSet[this.size++] = i;
  31.     }
  32.    
  33.     /*
  34.      * Metoda usuwa liczbę ze zbioru (wszystkie wystąpienia)
  35.      * @param i - liczba do usunięcia
  36.      * @throws Exception - w przypadku gdy zbiór nie ma takiej liczby
  37.      */
  38.     public void remove(int i) throws Exception {
  39.         assert(this.size >= 0): "Rozmiar zbioru mniejszy od 0... coś poszło nie tak";
  40.         assert (i >= this.min && i <= this.max) : "Podana liczba jest spoza zakresu";
  41.         int[] arrayBefore = this.nSet;
  42.         this.nSet = Arrays.stream(this.nSet).filter(val -> val != i).toArray();
  43.         if(Arrays.equals(arrayBefore, this.nSet)) {
  44.             throw new Exception("W zbiorze nie ma takiej liczby");
  45.         }
  46.     }
  47.    
  48.     /*
  49.      * Metoda losuje jedną liczbę ze zbioru i ją usuwa
  50.      * @return wylosowana liczba
  51.      * @throws Exception - występuje jeśli zbiór jest pusty
  52.      */
  53.     public int getRandomValue() throws Exception {
  54.         assert(this.size >= 0): "Rozmiar zbioru mniejszy od 0... coś poszło nie tak";
  55.         if(this.size == 0) {
  56.             throw new Exception("Zbiór jest pusty");
  57.         }
  58.         Random randomGenerator = new Random();
  59.         int randomInt = randomGenerator.nextInt(this.size);
  60.         assert(randomInt >= 0 && randomInt < this.size) : "Wygenerowany liczbę spoza zakresu";
  61.         int toReturn = this.nSet[randomInt];
  62.         this.nSet[randomInt] = this.nSet[--size];
  63.         return toReturn;
  64.     }
  65.    
  66.     /*
  67.      * Metoda zwraca sumę elementów
  68.      * @return suma
  69.      * @throws Exception - w przypadku jeśli zbiór jest pusty
  70.      */
  71.     public int getSumOfElements() throws Exception {
  72.         assert(this.size >= 0): "Rozmiar zbioru mniejszy od 0... coś poszło nie tak";
  73.         if(this.size == 0) {
  74.             throw new Exception("Zbiór jest pusty");
  75.         }
  76.         int sum = 0;
  77.         for(int j = 0; j < this.size; j++) {
  78.             sum += this.nSet[j];
  79.         }
  80.         return sum;
  81.     }
  82.    
  83.     /*
  84.      * Metoda dzieli każdy element zbioru przez podaną wartość bez reszty
  85.      * @param d - liczba przez którą dzielimy
  86.      * @throws Exception - gdy dzielimy przez 0
  87.      */
  88.     public void divideAllElementsBy(int d) throws Exception {
  89.         assert(this.size >= 0): "Rozmiar zbioru mniejszy od 0... coś poszło nie tak";
  90.         assert(d != 0) : "Nie można dzielić przez zero!";
  91.         for(int j = 0; j < this.size; j++) {
  92.             assert( this.nSet[j] % d == 0) : "Nie można podzielić całego zbioru bez reszty";
  93.         }
  94.         for(int j = 0; j < this.size; j++) {
  95.             this.nSet[j] /= d;
  96.         }
  97.     }
  98.    
  99.     /*
  100.      * Metoda sprawdza czy w zbiorze jest podany element
  101.      * @param i - element do sprawdzenia
  102.      * @return true gdy odnaleziono
  103.      *          false gdy nie ma
  104.      */
  105.     public boolean contains(int i) {
  106.         assert(this.size >= 0): "Rozmiar zbioru mniejszy od 0... coś poszło nie tak";
  107.         assert (i >= this.min && i <= this.max) : "Podana liczba jest spoza zakresu";
  108.         for(int j = 0; j < this.size; j++) {
  109.             if(this.nSet[j] == i) {
  110.                 return true;
  111.             }
  112.         }
  113.         return false;
  114.     }
  115.    
  116.     /*
  117.      * Metoda zwraca rozmiar zbioru
  118.      * @return rozmiar
  119.      */
  120.     public int getSize() {
  121.         assert(this.size >= 0): "Rozmiar zbioru mniejszy od 0... coś poszło nie tak";
  122.         return this.size;
  123.     }
  124.  
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement