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