logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Java - Praktyczny kurs Java. ćwiczenia do samodzielnego wykonania

bono1994 25 Paź 2013 11:45 4383 23
REKLAMA
  • #1 12878920
    bono1994
    Poziom 9  
    Posty: 16
    Witam!
    Mój problem polega na tym, że nie rozumiem treści zadania. Korzystam z książki: Praktyczny kurs Java
    Treść zadania: Zmień kod klasy Main w taki sposób, aby sprawdzane było również to czy wywołanie metody ustawElement zakończyło się sukcesem.


    Kod: text
    Zaloguj się, aby zobaczyć kod


    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 12878978
    Sparrowhawk
    Poziom 22  
    Posty: 368
    Pomógł: 57
    Ocena: 19
    Ale tu nie ma nic niezrozumiałego w tym poleceniu. Przyjrzyj się, co się dzieje po wystąpieniu metody pobierzElement().
  • #3 12879012
    bono1994
    Poziom 9  
    Posty: 16
    To inaczej zadam pytanie.
    Kiedy wywołanie metody kończy się sukcesem ?
    Bo według mojej dotychczasowej wiedzy wtedy kiedy kompilator nie wyrzuci błędu.
  • REKLAMA
  • Pomocny post
    #4 12879090
    mi14chal
    Poziom 28  
    Posty: 1021
    Pomógł: 112
    Ocena: 23
    Sprawdzasz dokładnie tak samo jak przy metodzie pobierzElement:

    Kod: Java
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #5 12879454
    Sparrowhawk
    Poziom 22  
    Posty: 368
    Pomógł: 57
    Ocena: 19
    bono1994 napisał:
    Kiedy wywołanie metody kończy się sukcesem ?
    Bo według mojej dotychczasowej wiedzy wtedy kiedy kompilator nie wyrzuci błędu.

    Niestety się mylisz. Kompilator nie sprawdza, czy wywołanie metody kończy się sukcesem. Kompilator np. w Java czy C++ sprawdzi poprawność typów, poprawność składni języka, ale np.
    Kod: text
    Zaloguj się, aby zobaczyć kod

    dla powyższej metody kompilator nie zgłosi błędu, a czy kiedykolwiek zakończy się ona sukcesem?
  • #6 12885547
    bono1994
    Poziom 9  
    Posty: 16
    Kolejny problem z zadaniem. Jak mogę zapisać przy zwracaniu liczby, że ma ona być nieujemna. Chodzi mi o to, aby został zgłoszony wyjątek w przypadku ujemnego wyniku.
    Napisałem klasę wyjątku dziedziczącą z Exception.


    Kod: text
    Zaloguj się, aby zobaczyć kod


    Oraz klasę:

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #7 12885614
    mi14chal
    Poziom 28  
    Posty: 1021
    Pomógł: 112
    Ocena: 23
    Trochę źle to napisałeś powinno być tak choć dawno w Javie nie kodziłem:
    Kod: Java
    Zaloguj się, aby zobaczyć kod


    No i w metodzie main robisz coś takiego:
    Kod: Java
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #8 12885983
    bono1994
    Poziom 9  
    Posty: 16
    Doszedłem metodą prób i błedów, że, dziedziczyć i zgłaszać własne wyjątki można bezproblemowo z klas takich klas jak np. ArithmeticException.

    Dlaczego jeśli moja klasa dziedziczyła z Exception to kompilator wyrzucał mi błąd:
    unreported exception NegativeValueException; must be caught or declared to be thrown ?
  • #9 12886062
    mi14chal
    Poziom 28  
    Posty: 1021
    Pomógł: 112
    Ocena: 23
    Pokaż cały kod.
  • #10 12886143
    bono1994
    Poziom 9  
    Posty: 16
    Kod: Java
    Zaloguj się, aby zobaczyć kod


    Kod: Java
    Zaloguj się, aby zobaczyć kod



    Jeżeli jest taka wersja jak wyżej kompilator wyrzuca błąd.
    Natomiast jeżeli zmodyfikuję klasę wyjątku, jest ok.


    Kod: Java
    Zaloguj się, aby zobaczyć kod
  • #11 12886210
    mi14chal
    Poziom 28  
    Posty: 1021
    Pomógł: 112
    Ocena: 23
    A gdzie jest blok try catch? Zobacz na mój post wyżej jak to powinno wyglądać.
  • #12 12886236
    bono1994
    Poziom 9  
    Posty: 16
    Hmmm, bo starałem się robić zgodnie z wcześniejszym przykładem w książce.
    I tak jak pisałem wcześniej po modyfikacji klasy NegativeValueException, program działa bez problemu. Chciałbym tylko wiedzieć dlaczego tak jest. Później zabawię się z wstawieniem try i catch.
  • REKLAMA
  • #13 12886302
    mi14chal
    Poziom 28  
    Posty: 1021
    Pomógł: 112
    Ocena: 23
    Tylko że jak funkcja wyrzuca wyjątek to musisz go obsłużyć przy pomocy try i catch.
  • #14 12887274
    bono1994
    Poziom 9  
    Posty: 16
    Teraz poprawiłem i dalej, póki klasa mojego wyjątku dziedziczy z ArithmeticException to wszystko jest ok, a kiedy tylko zmienie na Exception to nie działa :(
    Mógłby ktoś wytłumaczyć dlaczego tak jest?
    Kod: Java
    Zaloguj się, aby zobaczyć kod


    Kod: Java
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #15 12887608
    Sparrowhawk
    Poziom 22  
    Posty: 368
    Pomógł: 57
    Ocena: 19
    Spróbuj tak:
    Kod: Java
    Zaloguj się, aby zobaczyć kod
  • #16 12897501
    bono1994
    Poziom 9  
    Posty: 16
    Mam klasę A i klasę wewnętrzną B, oraz klasę dziedziczącą z A Extended A.
    Na czym polega różnica zapisu w klasie Extended A ?

    Kod: Java
    Zaloguj się, aby zobaczyć kod


    Kod: Java
    Zaloguj się, aby zobaczyć kod


    Kod: Java
    Zaloguj się, aby zobaczyć kod
  • #17 12900259
    bono1994
    Poziom 9  
    Posty: 16
    W zadaniu należy napisać klasę pochodną od BufferedReader. W tej klasie ma znaleźć się metoda getInt, która ma odczytywać wartość liczby całkowitej wpisaną z klawiatury komputera.

    Napisałem kod i proszę o pomoc. Gdzie są błędy ?

    Kod: Java
    Zaloguj się, aby zobaczyć kod
  • #18 12900312
    mi14chal
    Poziom 28  
    Posty: 1021
    Pomógł: 112
    Ocena: 23
    Nie robi się dla każdej linijki osobnego bloku try catch. Poza tym void nic nie zwraca zmień typ funkcji na int.
  • #19 12900900
    bono1994
    Poziom 9  
    Posty: 16
    Zmieniłem, ale mimo wszystko nie działa. Tamten return, miał jedynie kończyć działanie programu, a nie zwracać jakąkolwiek wartość, ale zmieniłem to na int, zwracającego 0.

    Kod: Java
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #20 12901548
    Konto nie istnieje
    Konto nie istnieje  
  • #21 12901685
    bono1994
    Poziom 9  
    Posty: 16
    A jakaś opinia na temat Kompendium programisty wydanym przez Oracle ?
    Bo planuje się wziąć za tą książkę w najbliższym czasie.
  • #22 12901743
    Konto nie istnieje
    Konto nie istnieje  
  • #23 12901761
    bono1994
    Poziom 9  
    Posty: 16
    Mam dostęp do obu i nie muszę żadnej kupować :D Z tym, że Thinking in java III edycja, a Kompendium Programisty chyba VIII. Bardzo dużo zostało dodane do javy od czasu III edycji ?
  • #24 12902113
    Konto nie istnieje
    Konto nie istnieje  

Podsumowanie tematu

✨ W dyskusji poruszono problem związany z modyfikacją kodu w języku Java, aby sprawdzić, czy wywołanie metody `ustawElement` w klasie `Tablica` zakończyło się sukcesem. Użytkownicy wskazali, że sukces metody można ocenić na podstawie flagi `wystapilBlad`. Dodatkowo, omawiano kwestie związane z obsługą wyjątków, w tym tworzenie własnych klas wyjątków, takich jak `NegativeValueException`, oraz konieczność obsługi wyjątków w bloku `try-catch`. Użytkownicy dzielili się również doświadczeniami z książkami o programowaniu w Javie, takimi jak "Thinking in Java" oraz "Kompendium programisty".
Wygenerowane przez model językowy.
REKLAMA