Wystąpienie wyjątku dzielenia przez 0, a rzutowanie

0

Program działa dobrze, 3 dzielenia przez 0 to 3 wyjątki i przerywa swoje działanie.

/*
 * 4. Wykonaj program, który losuje dwie liczby całkowite 
 * z przedziału (-10 do 10). Następnie podziel pierwszą liczbę
 *  przez drugą i wypisz wynik. Uwzględnij i zaprogramuj wyjątek 
 *  dzielenia przez zero. Wypisz informację o wystąpieniu tego wyjątku.
 *   Po trzecim wystąpieniu wyjątku zakończ wykonywanie programu.
 */

import java.util.Random;
 
public class Zad4Wyjatki
{
    public static void main(String[] args)
    {
        int liczba1;
        int liczba2;
        int iloscWyjatkow = 0;
        double wynik = 0;
        boolean wylacz = false;
        Random losujLiczbe = new Random();
 
        //-10 do 10
        //(upperbound - lowerbound) + lowerbound;
        while(wylacz!=true)
        {
            if(iloscWyjatkow>=3)
            {
                wylacz=true;
            }
            else
            {
                liczba1 = losujLiczbe.nextInt(10-(-10))+-10;
                liczba2 = losujLiczbe.nextInt(10-(-10))+-10;
                System.out.print("\n"+liczba1 + " / " + liczba2 + " = ");

                try
                {
                    wynik = liczba1/liczba2;
                    System.out.print(wynik);
                }
                catch(ArithmeticException e)
                {
                    e.printStackTrace();
                    iloscWyjatkow++;
                }
            }
        }
    }
}

Teraz to:

wynik = liczba1/liczba2;

zamieniamy na to:

wynik = (double)liczba1/liczba2;

w celu uzyskania prawidłowych wyników.
Pytanie dlaczego teraz program nie sypie wyjątkami, a przez to się zapętla ?????

0

Jeżeli dzielisz liczbę całkowitą przez całkowite zero to masz ArithmeticException,
zaś jeżeli dzielisz rzeczywistą przez rzeczywiste zero to masz wynik INF.

0

Losowanie ma usterkę, nigdy nie wylosujesz liczby 10, losujesz z zakresu [-10, 9].

1 użytkowników online, w tym zalogowanych: 0, gości: 1