Kod: Zaznacz cały
import javax.swing.JOptionPane;
public class Program {
public static void main(String[] args) {
boolean czySięUdało = false;
while (czySięUdało == false) {
try {
String napis = JOptionPane.showInputDialog(" Ile liczb chcesz dodać ");
int ileLiczb = Integer.parseInt(napis);
if ((ileLiczb < 0) && (ileLiczb % 1 == 0)) {
throw new NumberFormatException();
}
czySięUdało = true;
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, " Podaj liczbę całkowitą, większą od zera ");
}
}
try {
String napis1 = JOptionPane.showInputDialog(" Podaj liczbę ");
double n = Double.parseDouble(napis1);
double suma;
JOptionPane.showMessageDialog(null, " Suma liczb wynosi " + n);
} catch (NullPointerException w) {
JOptionPane.showMessageDialog(null, " Podaj liczbę całkowitą, większą od zera ");
}
}
}
Jeżeli podczas pobierania którejś z liczb (liczby całkowitej nieujemnej lub którejś z liczb zmiennoprzecinkowych) użytkownik wpisze niepoprawne dane, to program powinien poprosić go o podanie tej liczby (tylko tej jednej liczby, a nie całego zestawu danych) ponownie — aż do skutku.
W każdym momencie działania programu (podczas pobierania liczby całkowitej i podczas pobierania liczb zmiennoprzecinkowych) użytkownik ma mieć możliwość zrezygnowania z wprowadzania dalszych danych (np. klikając „Cancel” w okienku dialogowym). Program w takim wypadku nie pobiera już żadnych danych i kończy działanie nie wyświetlając sumy.
Uwagi:
1) Metoda JOptionPane.showInputDialog zwraca wartość null w przypadku anulowania pobierania danych.
2) Metoda Integer.parseInt zgłasza wyjątek NumberFormatException w przypadku otrzymania wartości null w argumencie, a metoda Double.parseDouble zgłasza w takiej sytuacji wyjątek NullPointerException.