• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyjątki złe działanie programu Pomoc Java

Object Storage Arubacloud
0 głosów
541 wizyt
pytanie zadane 4 lutego 2019 w Java przez mn130496 Gaduła (3,530 p.)

Witam 

Jestem studentem informatyki i postanowiłem na własną rękę podszkolić się w programowani w języku Java.

Mam takie zadanie: Napisz aplikację, która obsłuży wyjątek w przypadku wystąpienia operacji niedozwolonej  - np.dzielenia liczby przez 0 (ArithmeticException). Po wykryciu wystąpienia wyjątku należy wyświetlić komunikat "Nie wolno dzielić przez zero ", następnie pomimo wystąpienia błędu zwrócić komunikat i zakończyć działanie programu. Napisałem taki program: 

package zadania_lab10;
import java.util.Scanner;
public class Zad1 {
    private static int mianownik;
    public static void main(String[] args) {
/* konstrukcja try catch która pozwala obsużyć wyjątek dzielenia przez zero. wewnątrz try(ang. próbuj) piszę kod programu , który będzie się wykonywać
Dopuki wystąpi wyjątek.Po wystąpieniu wyjątku za pomocą catch(ang łapać) wyjątek zostaje przechwycony i obsużony 
*/
    try{
        int licznik , mianownik; //zmienne przechowujące liczby do dzielenia.
        double wynik;
        Scanner o = new Scanner(System.in);
        System.out.println("Podaj liczby do dzielenia: ");
        licznik = o.nextInt(); // do zmiennej licznik dodaje liczbę pobraną z klawiatury
        mianownik = o.nextInt();// do zmiennej mianownik dodaję liczbę pobraną z klawiatury
        o.close();
        wynik = (double)licznik / mianownik;
        System.out.println("Wynik dzielenia: " +wynik);
    }catch(ArithmeticException e) {
        System.out.println("Nie wolno dzielić przez zero");
        System.out.println("Pomimo błędu program się nie wykszaczył. \n program konczy działanie");
    }
    }
}

Problem polega na tym , że gdy dziele przez 0 to zamiast wyświetlić komunikat  "Nie wolno dzielić przez zero"

wyświetla " Wynik dzielenia: Infility ". Czy ktoś może mi pomuc rozwiązać ten problem?. Z góry dziękuję

 

 

1 odpowiedź

+1 głos
odpowiedź 4 lutego 2019 przez mbabane Szeryf (79,280 p.)
wybrane 5 lutego 2019 przez mn130496
 
Najlepsza

Nie działa, ponieważ zgodnie z jakimś tam standardem IEEE dzielenie przez 0 typu float i double ma dawać wynik Infinity. Powyższy wyjątek będzie rzucany tylko w przypadku gdy wystąpi dzielnie przez 0 typu integer/long.

https://stackoverflow.com/questions/14137989/java-division-by-zero-doesnt-throw-an-arithmeticexception-why

W Twoim przypadku najprościej będzie zrobić tak:

if(mianownik == 0.0)
    throw new ArithmeticException();

 

Podobne pytania

0 głosów
1 odpowiedź 506 wizyt
pytanie zadane 9 lipca 2019 w Java przez magicznyukf Początkujący (260 p.)
0 głosów
1 odpowiedź 239 wizyt
pytanie zadane 15 kwietnia 2018 w Java przez Adrian Paź Obywatel (1,270 p.)
+1 głos
0 odpowiedzi 218 wizyt
pytanie zadane 2 listopada 2020 w C# przez XavRock Obywatel (1,390 p.)

92,537 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...