Exceptions

Feras

Aktives Mitglied
hi, beim folgenden Programm soll ich die main und die zeile getInt2() so ergänzen, dass das Programm ausgeführt wird und die Fehlermeldung ausgegeben wird. Das habe ich versucht, indem ich beide Zeile mit trows Exception2 ausgestattet habe. Es funktioniert jedoch immernoch nicht und ich weiß auch nicht mehr weiter. Kann mir jemand einem Tipp geben?

MfG Feras

Java:
import java.util.Scanner;

public class Aufgabe3 {

	static class Exception1 extends RuntimeException {

		public Exception1(String message) {

			super(message);
		}
	}

	static class Exception2 extends Exception {

		public Exception2(String message) {

			super(message);
		}
	}

	int getInt1() {

		Scanner scan = new Scanner(System.in);

		if (!scan.hasNextInt()) {

			throw new Exception1("Keine Ganzzahl eingegeben");

		}

		return scan.nextInt();
	}

	int getInt2() {

		Scanner scan = new Scanner(System.in);

		if (!scan.hasNextInt()) {

			throw new Exception2("Keine Ganzzahl eingegeben");

		}

		return scan.nextInt();
	}

	int getInt3() {

		Scanner scan = new Scanner(System.in);
		return scan.nextInt();
	}

	public static void main(String[] args)  {

		Aufgabe3 ex = new Aufgabe3();
		System.out.println("Zahl 1: ");
		System.out.println(ex.getInt1());
		System.out.println("Zahl 2: ");
		System.out.println(ex.getInt2());
		System.out.println("Zahl 3: ");
		System.out.println(ex.getInt3());
	}
}
 
Java:
import java.util.Scanner;
 
public class Aufgabe3 {
 
	static class Exception1 extends RuntimeException {
 
		public Exception1(String message) {
 
			super(message);
		}
	}
 
	static class Exception2 extends Exception {
 
		public Exception2(String message) {
 
			super(message);
		}
	}
 
	int getInt1() {
 
		Scanner scan = new Scanner(System.in);
 
		if (!scan.hasNextInt()) {
 
			throw new Exception1("Keine Ganzzahl eingegeben");
 
		}
 
		return scan.nextInt();
	}
 
	int getInt2() throws Exception2 {
 
		Scanner scan = new Scanner(System.in);
 
		if (!scan.hasNextInt()) {
 
			throw new Exception2("Keine Ganzzahl eingegeben");
 
		}
 
		return scan.nextInt();
	}
 
	int getInt3() {
 
		Scanner scan = new Scanner(System.in);
		return scan.nextInt();
	}
 
	public static void main(String[] args) throws Exception2  {
 
		Aufgabe3 ex = new Aufgabe3();
		System.out.println("Zahl 1: ");
		System.out.println(ex.getInt1());
		System.out.println("Zahl 2: ");
		System.out.println(ex.getInt2());
		System.out.println("Zahl 3: ");
		System.out.println(ex.getInt3());
	}
}


Also so hast du das geschrieben? Dann sollte das gehen. Habs bei mir getestet und es klappt. Die Exception wird natürlich nur geworfen, wenn keine Zahl eingegeben wird, sondern ein Buchstabe etc.
 
Aber ich möchte gern die Fehlermeldung "Keine Ganzzahl eingegeben" erhalten. Ist das nicht möglich?
 
Zuletzt bearbeitet:
*Edit: Okay mittlerweile wurde der Beitrag über mir "ergänzt" was meine Aussage ungültig macht.

[Sie sollte ausgegeben werden.
Kann es sein (ich kann das im Moment nicht selber nachtesten) das bei Eingabe eines Buchstaben auch ein Integer zurück gegenen wird?

Immerhin ist ein "char" nichts anderes als eine Zahl (während ein Wort ein char-array wäre und damit ungültig).
Somit würde das theoretisch trotzdem funktionieren wenn man einen Buchstaben eintippt.
In C++ zumindest würde das unbeachtet funktionieren, kann das aber mit der Scannerklasse im Moment nicht selber nachtesten.

Gruß
Net]
 
Zuletzt bearbeitet:
eigentlich nicht :/ Aber warum muss ich eigentlich beim getInt2 throws verwenden und nicht bei getInt1 ?
 
Zuletzt bearbeitet:
getInt1() wirft eine RuntimeException.
Bei RuntimeExceptions braucht man in der Methodensignatur kein "throws".
Normale Exceptions (auch "checked Exceptions") müssen zwingend behandelt werden. RuntimeException sind eben "unchecked", müssen dementsprechend nicht behandelt werden und deuten oft auf Programmierfehler hin (NullpointerException etc).
 
Zuletzt bearbeitet:

Zurück
Oben