Ćwiczenie 7 - Java – Błędy i wyjątki

Zadania do wykonania:


Commit6_3. Błędny wybór


Commit6_4. Zmodyfikować metodę Parse w kasie Student.













Zadanie dodatkowe 1 (dla zainteresowanych):

Dodać kasowanie wybranego studenta z bazy.


Zadanie dodatkowe 2 (dla zainteresowanych):

1. Utworzyć nowy projekt z kategorii Java, typ Java Application.
2. W metodzie main dodać kod działający wg algorytmu:
 1. Zadeklarować zmienną o nawie zbiory klasy ArrayList, która będzie przechowywać kolejne zbiory wczytane z pliku (punkt 1.2.).
 2. Zadeklarować zmienną o nazwie zbiór klasy HashSet, która będzie przechowywać elementy zbioru (punkt 1.2.).
 3. Utworzyć nowy obiekt klasy ArrayList przypisać referencje do niego do zmiennej utworzonej w kroku 1 algorytmu (punkt 1.2.).
 4. Utworzyć skaner dla pliku z danymi (punkt 1.6.).
 5. Ustawić separator pól skanera z kroku 4 algorytmu na znak przejścia do nowej linii (punkt 1.8.). Znak ten zwraca instrukcja:
     System.getProperty("line.separator")
 6. Zadeklarować zmienną typu tekstowego (klasy String) i przypisać do niej wyrażenie regularne opisujące linię z pliku danymi (punkt 1.7.).
 7. Używając skanera, pobierać z pliku linie pasujące do wyrażenia regularnego z kroku 6 algorytmu (punkt 1.6.).
 8. Dla każdej pobranej linii:
  1. Wyświetlić pobraną linię.
  2. Utworzyć nowy obiekt klasy HashSet i przypisać referencje do niego do zmiennej utworzonej w punkcie 2 algorytmu (punkt 1.2.).
  3. Usunąć 1 i ostatni znak pobranej linii (punkt 1.9.) - są to nawiasy { i }.
  4. Utworzyć skaner wczytanej linii (punkt 1.8.).
  5. Ustawić separator pól skanera z kroku 8.4 na przecinek. Pobierać kolejne elementy zbioru i dodawać je do zmiennej z p. 2 algorytmu (punkt 1.4.).
  6. Po utworzeniu całego zbioru dodać go do listy z p. 1 algorytmu.
 9. Używając iteratorów wyświetlić zawartość listy i zbiorów, które są na niej (punkt 1.5.). Wynik powinien mieć następujący format:
{a, b, c}
{x1, x2}


Zadanie dodatkowe 3 (dla zainteresowanych):

Zadaniem programu jest wczytanie danych z pliku, obliczenie iloczynu kartezjańskiego i wyświe­tlenie wyniku. Mamy więc 2 zupełnie różne zadania:

1.Wczytanie danych z pliku tekstowego i zamiana ich na odpowiednie obiekty.

2.Obliczenie iloczynu kartezjańskiego.

W celu realizacji tych zadań utworzymy 2 klasy: OdczytDanych i IloczynKartezjański. Klasa Od­czytDanych wygląda następująco:

Pola:

nazwa pliku, z którego mają być odczytane dane

lista zbiorów odczytanych z pliku

Metody

get i set dla pól

metoda odczytująca dane z pliku

Klasa IloczynKartezjański wygląda następująco:

Pola:

lista zbiorów, z których obliczymy iloczyn kartezjański

wynik obliczeń (typu zbiór)

Metody:

get i set dla pól

metoda obliczająca iloczyn kartezjański

Algorytm obliczania iloczynu kartezjańskiego (do metody main) jest następujący:

1.Utwórz nowy obiekt odczytDanych klasy OdczytDanych.

2.Ustaw plik, z którego będą odczytane zbiory.

3.Odczytaj dane z pliku.

4.Pobierz listę zbiorów z obiektu  odczytDanych.

5.Utwórz nowy obiekt iloczynKartezjański klasy IloczynKartezjański.

6.Ustaw listę zbiorów, z których obliczymy iloczyn kartezjański.

7.Wykonaj obliczenia.

8.Pobierz wynik z obiektu  iloczynKartezjański.

9.Wyświetl wynik.

Wskazówki do wykonania ćwiczenia

Obliczanie iloczynu kartezjańskiego N zbiorów można wykonać wykorzystując właściwość roz­dzielności tej operacji. Na początek utwórzmy metodę obliczającą iloczyn kartezjański dwóch zbio­rów:

   protected HashSet oblicz2zb(HashSet z1, HashSet z2) {

        HashSet wynik;

        // utwórz nowy obiekt klasy Set i zapisz referencję do wynik

        // dla każdego elementu e1 zbioru z1:

            // dla każdego elementu e2 zbioru z2:

                // dodaj do zbioru wynikowego tekst e1,e2

        return wynik;

    }

Teraz utworzymy właściwą metodę obliczającą iloczyn kartezjański:

public void oblicz()  {

        //sprawdź, czy na liście zbiorów są przynajmniej 2 zbiory

        //oblicz IK dwóch pierwszych zbiorów z listy i zapamiętaj wynik

        //dla każdego zbioru Z z listy zbiorów, zaczynając od 3:

             //oblicz IK wyniku poprzednich obliczeń

             // i zbioru Z, zapamiętaj wynik

    }

Iteracje po zbiorach lub listach możemy wykonać przy pomocy instrukcji:

   for(Object e: zbior) { // e to kolejny element zbioru .... }

Iteracje po listach możemy wykonać przy pomocy instrukcji:

   for(i = 2; i<lista.size(); i++) { Object element = lista.get(i); .... }

Może zajść potrzeba rzutowania typu, używamy wtedy konstrukcji:

   Set zbior = (HashSet ) lista.get(i);






Posledná zmena: Thursday, 1 February 2024, 12:29