Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

pętla, continue

Ostatnio zmodyfikowano 2018-04-15 18:03
Autor Wiadomość
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.
P-170690
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.
P-170691
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?
P-170692
pekfos
» 2018-04-15 13:48:13
C/C++
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.
P-170693
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?
P-170694
jankowalski25
» 2018-04-15 14:44:10
Wyjątek łapiesz w dowolnym pasującym momencie, byle przed końcem maina.
P-170695
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
C/C++
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
P-170696
jankowalski25
» 2018-04-15 16:01:16
https://4programmers.net/Forum​/Java/307706-metody_petle

był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?

wszyscy zagadkami piszą
Spróbuj zadać lepsze pytanie, może wtedy uzyskasz lepszą odpowiedź.
P-170697
1 2 « 3 » 4
Poprzednia strona Strona 3 z 4 Następna strona