[Java] pobieranie i sumowanie liczb z wyjątkami

mistrz23
Użytkownik
Użytkownik
Posty: 52
Rejestracja: 18 mar 2013, o 15:14
Płeć: Mężczyzna
Lokalizacja: Olsztyn
Podziękował: 2 razy

[Java] pobieranie i sumowanie liczb z wyjątkami

Post autor: mistrz23 »

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 ");
        }

    }

}
Program pobiera najpierw od użytkownika liczbę całkowitą nieujemną — liczbę kolejnych liczb do pobrania. Następnie program pobiera od użytkownika zadaną liczbę liczb zmiennoprzecinkowych i wyświetlać ich sumę.

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.
Ostatnio zmieniony 12 sty 2014, o 19:08 przez Afish, łącznie zmieniany 2 razy.
Powód: Poprawa wiadomości.
ravgirl
Użytkownik
Użytkownik
Posty: 171
Rejestracja: 29 gru 2013, o 17:41
Płeć: Kobieta
Lokalizacja: Pruszków
Pomógł: 64 razy

[Java] pobieranie i sumowanie liczb z wyjątkami

Post autor: ravgirl »

Na pierwszy rzut oka wygląda ok, brakuje jednak pętli do pobierania wartości zmiennoprzecinkowych. Powinna to być pętla for, pobierająca tyle liczb, ile użytkownik wpisał na początku. Zmienną pamiętającą sumę trzeba zadeklarować przed tą pętlą.
mistrz23
Użytkownik
Użytkownik
Posty: 52
Rejestracja: 18 mar 2013, o 15:14
Płeć: Mężczyzna
Lokalizacja: Olsztyn
Podziękował: 2 razy

[Java] pobieranie i sumowanie liczb z wyjątkami

Post autor: mistrz23 »

A co jeśli chcemy zrezygnować 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.
ravgirl
Użytkownik
Użytkownik
Posty: 171
Rejestracja: 29 gru 2013, o 17:41
Płeć: Kobieta
Lokalizacja: Pruszków
Pomógł: 64 razy

[Java] pobieranie i sumowanie liczb z wyjątkami

Post autor: ravgirl »

No tak - jeżeli będzie Cancel, wystarczy przerwać pętlę wczytującą kolejne liczby (słówko break).

Edit: w zasadzie to nie musisz używać słówka break, wystarczy Ci dopisanie pętli. Jeśli użytkownik wciśnie Cancel, wtedy poleci wyjątek, który już łapiesz. Tak więc jeśli dopiszesz pętlę i użytkownik przerwie wprowadzanie liczb - będzie rzucony wyjątek, co spowoduje przerwanie pętli.
ODPOWIEDZ