• 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
546 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ź 515 wizyt
pytanie zadane 9 lipca 2019 w Java przez magicznyukf Początkujący (260 p.)
0 głosów
1 odpowiedź 248 wizyt
pytanie zadane 15 kwietnia 2018 w Java przez Adrian Paź Obywatel (1,270 p.)
+1 głos
0 odpowiedzi 225 wizyt
pytanie zadane 2 listopada 2020 w C# przez XavRock Obywatel (1,390 p.)

92,696 zapytań

141,607 odpowiedzi

320,114 komentarzy

62,055 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

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!

...