Exceptions

Status
Nicht offen für weitere Antworten.

vensch

Mitglied
Hallo Leute,
ich sitz grad vor folgender Aufgabe:

Kompilieren Sie das Programm und führen Sie es aus. Verwenden Sie als Eingabe die
Werte: {„wort“; -4; 0}, welche jeweils eine Exception werfen. Fange Sie jede der drei
Exceptions einzeln mit try/catch ab. Wenn eine Exception abgefangen wird, soll über
System.out.println() dem Benutzer übermittelt werden, welchen Fehler er gemacht
hat. Danach soll das Programm sofort mit System.exit(1) beendet werden.
Geben Sie in der Main-Methode die Namen der behandelten Exceptions als
Kommentar an.


Bin soweit mit dem Code fertig:
Java:
import javax.swing.JOptionPane;
/**
 * Diese Klasse erzeugt den Mittelwert einer variierenden Menge von Zahlen
 *
 */
public class Average {
    /**
     * Diese Methode erzeugt den Mittelwert einer variierenden Menge von Zahlen
     * 
     */
    public static void main(String[] args) {
        /**
         * Behandelte Exceptions: 
         * Exception in thread "main" java.lang.NumberFormatException: For input string: "wort",
         * Exception in thread "main" java.lang.NegativeArraySizeException,
         * Exception in thread "main" java.lang.ArithmeticException: / by zero
         * 
         */

        
            int n = Integer.parseInt(JOptionPane
                    .showInputDialog("Länge des Arrays"));
            int[] fArray = new int[n];
            
            try {
                for (int i = 0; i < n; i++)
                    fArray[i] = Integer.parseInt(JOptionPane
                        .showInputDialog("Eingabe des " + i + ". Wertes"));

                int sum = 0;

                for (int i = 0; i < n; i++)
                    sum += fArray[i];
                float mittel = sum / n;
                System.out.println("Mittelwert: " + mittel);
                }
            catch (NumberFormatException e1) {
                System.out.println("***NumberFormatException: " + e1.toString());
                System.exit(1);
            }
            catch (NegativeArraySizeException e2) {
                System.out.println("***NegativeArraySizeException: " + e2.toString());
                System.exit(1);
            }
            catch (ArithmeticException e3) {
                System.out.println("***ArithmeticException: " + e3.toString());
                System.exit(1);
            }
    }

}

Die dritte Exception funktioniert auch, die beiden davor aber komischerweise nicht. Und ich sehe den Fehler nicht... ???:L
 
definiere 'funktioniert nicht'

was passiert denn bei dir, wenn du 'fsdsdff' eintippst?
 
Bitte immer genaue Fehlerbeschrebungen angeben..

Bei mir "funktioniert" alles, nach meiner Definition^^ weiß ja nicht was du dir vorstellst
 
"Funktioniert nicht" heißt, dass ich nicht die gewünschte Ausgabe bekomme, sondern die Fehlermeldung, die schon am Anfang ausgeworfen wurde. Bei "wort" also:

Exception in thread "main" java.lang.NumberFormatException: For input string: "wort"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Average.main(Average.java:22)
 
vielleicht weil die erste Abfrage nicht im try/ catch steht? 😉
 
Vlt liegt es daran, dass du "wort" nicht in einer int-variable speichern kannst.

Code:
int n = Integer.parseInt(JOptionPane.showInputDialog("Länge des Arrays"));

Hier könntest du z.B. ein try vorpacken und dann die Exception fangen.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben