adrian.paz Temat założony przez niniejszego użytkownika |
» 2018-04-15 13:25:50 Pomóż mi proszę. W sumie zrobiłem tą nową metodę bo nawet jak pętla by sie miała wykonać i tak by się nie wykonała bo dane wpisuje w mainie i w nim przekazuje "linie" do kalkulatora. |
|
pekfos |
» 2018-04-15 13:31:41 Po pierwsze: nie łap wyjątków jeśli ich obsługa nie ma w danym momencie sensu. |
|
adrian.paz Temat założony przez niniejszego użytkownika |
» 2018-04-15 13:42:05 A dlaczego nie ma sensu? Chodzi ci tam gdzie jest to parsowanie? Dałem to bo jak zamiast 2 liczb dam np litery? Może m mi to wytłumaczyć? "Jeśli ich obsługa nie ma w danym momencie sensu". Wiem, że ty wiesz ale podziel się tą wiedzą :P Nie wiem czy to dobrze ale babka z programowania mówiła że jak coś może rzucić wyjątek to powinniśmy go przechwycić. To jak ma to wyglądać? Pokażesz mi? |
|
pekfos |
» 2018-04-15 13:48:13 try { num1 = Integer.parseInt( a ); num2 = Integer.parseInt( c ); } catch( NumberFormatException e ) { System.err.println( errorMessage + " 2" ); Zad2.setLine(); } |
A to twoim zdaniem jest sensowna obsługa błędu? Wywołanie rekurencyjne jest złe, powinno być zwrócenie wartości, ale ta wartość będzie wtedy wyświetlona jako wynik, a wyjątek w tym miejscu oznacza, że nie ma poprawnego wyniku. Jak funkcja zwraca wynik, ale się nie da, to może np wyrzucić wyjątek. Na przykład właśnie ten wyjątek, o ile nie będziesz mu przeszkadzać swoją obsługą błędów. |
|
adrian.paz Temat założony przez niniejszego użytkownika |
» 2018-04-15 14:34:05 To w takim razie jak wyłapać ten wyjątek? na samym końcu w returnie? Bo w końcu musze go jakoś obsłużyć bo mi wywali w programie. Skoro rekurencja jest zła to jak mam inaczej jeszcze raz wykonać pętle? zrezygnować całkiem z metody setLine() i wszystkie dane wprowadzać w metodzie kalkulator? |
|
jankowalski25 |
» 2018-04-15 14:44:10 Wyjątek łapiesz w dowolnym pasującym momencie, byle przed końcem maina. |
|
adrian.paz Temat założony przez niniejszego użytkownika |
» 2018-04-15 15:29:15 W ogóle ktoś mi napisał że błąd leży całkiem gdzie indziej. Mianowicie w metodzie setLine(). Ale w ogóle go nie rozumiem wszyscy zagadkami piszą :( a ja proszę o łopatologie :D static void setLine() { Scanner skan = new Scanner( System.in ); String linia = skan.nextLine(); double wynik = Zad2.kalkulator( linia ); System.out.println( "Wynik: " + wynik ); skan.close(); }
tu wywołujesz metode kalkulator która jest dopiero uruchamiana po zczytaniu :) a wniej masz swój kod choćby który napisałeś powyżej , a zczytujesz zanim ja wywołujesz... więc ? Zrozum jak skanowany jest kod, modfikator statyczny nie powoduje że metoda działa bez jej odwołania na rzecz samej klasy
|
|
|
jankowalski25 |
» 2018-04-15 16:01:16 https://4programmers.net/Forum/Java/307706-metody_petlebyłem już na różnych forach i nic |
Nic dziwnego, skoro próbujesz szukać lepszego forum zamiast lepiej opisać, z czym masz problem. Program przy wpisaniu prawidłowych wartości działa dobrze. Problem jest kiedy po wpisaniu złych w następnym wywołaniu wpiszę dobre. Wyswietla się wynik ale też błąd "NoSuchElementException" |
Już było wcześniej wspomniane, co należy zrobić. Skoro jedynym problemem jest ten wyjątek, to co stoi na przeszkodzie, żeby użyć bloku try do objęcia odpowiedniego fragmentu i złapania go wewnątrz catch ? I co stoi na przeszkodzie, aby nie robić tego od razu, tylko na przykład w samym mainie albo w innym sensownym miejscu, gdzie będzie można obsłużyć taki przypadek bez większych problemów? Spróbuj zadać lepsze pytanie, może wtedy uzyskasz lepszą odpowiedź. |
|
1 2 « 3 » 4 |