Ausführungsproblem

MGrzes

Mitglied
Hallo,

ich habe ein Problem mit meinem Programm und zwar funktioniert es nicht richtig. Es muss an einer Stelle oder an zwei Stellen liegen. Ich vermute es hat was mit dem "int getInt2()" zu tuhen. Kann mir bitte jemand helfen?

Danke schon mal im Voraus.

Anhang ist gespeichert als .odt
 

Anhänge

  • Java Programm Fehler.odt
    12,9 KB · Aufrufe: 10
G

Gast2

Gast
Und die Fehlermeldung posten, falls du deine bekommst. Ansonsten sagen was wo deiner Meinung nach anders laufen sollte.
 

MGrzes

Mitglied
Ich bekomme eine Fehlermeldung, wenn ich die zweite Zahl eingebe bei der ersten aber nicht warum ist das so?

Java:
import java.util.Scanner ; public

class Except{
	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) {
		Except ex = new Except ( ) ;
		System.out.println("Zahl 1:"); System.out.print(ex.getInt1());
		System.out.println("Zahl 2:"); System.out.print(ex.getInt2());
		System.out.println("Zahl 3:"); System.out.print(ex.getInt3());
	}
}
 
S

SlaterB

Gast
schön undeutlich, nur nicht die Fehlermeldung nennen, erstaunlich immer wieder

wobei auch interessant wäre was du eintippst 'wenn ich die zweite Zahl eingebe',
wobei der Code gar nicht kompiliert

meinst du gar kein Problem zur Laufzeit, bei der Eingabe von Werten, sondern den Compiler-Fehler?
alles muss man erst überlegen, wenn nicht deutlich hingeschrieben,
versuche das bitte immer durch Klarheit zu vermeiden

----

Exception2 erbt von Exception, nicht von RuntimeException,
diese deutlich ablesbare Unterscheidung hat Konsequenzen, zu dem man das Hintergrundwissen nachlesen kann und muss,
sonst natürlich unverständlich

Galileo Computing :: Java ist auch eine Insel - 6 Exceptions
besonders z.B. '6.2 RuntimeException muss nicht aufgefangen werden'
oder sonstiges Lehrbuch

Kurzfassung: RuntimeException ist, wie die zitierte Überschrift es sagt, pflegeleicht, aber dann auch etwas unsichtbar,
normale Exceptions will man sicher nicht direkt selber mit try/ catch fangen, daher Methode mit 'throws' ausstatten,
alle Aufrufer stehen vor der Wahl zwischen Fangen oder selber auch Weiterwerfen ('throws')
 

MGrzes

Mitglied
So, meine Fehlermeldung war:

Code:
Zahl 1:
24
24Zahl 2:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Unhandled exception type Except.Exception2

	at Except.getInt2(Except.java:24)
	at Except.main(Except.java:35)

als mir bei eclips vorgeschlagen wurde diese Zeile:

Java:
int getInt2() {
		Scanner scan = new Scanner(System.in);
		if (!scan.hasNextInt()){
			throw new Exception2("Keine Ganzzahl eingegeben");

zu verbessern, kam das raus:

Java:
int getInt2() throws Exception2 {
		Scanner scan = new Scanner(System.in);
		if (!scan.hasNextInt()){
			throw new Exception2("Keine Ganzzahl eingegeben");

Dann konnte ich noch nicht mal die erste Zahl eingeben, weil das dann kam:

Code:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Unhandled exception type Except.Exception2

	at Except.main(Except.java:35)

Ich habe mal was von try und catch gelesen, das will ich aber erstmal nicht wissen wie das geht. Habe ich vielleicht was vergessen?
 
S

SlaterB

Gast
was noch fehlt wäre von meiner Kurzfassung der letzte Satz
alle Aufrufer stehen vor der Wahl zwischen Fangen oder selber auch Weiterwerfen ('throws')

wenn du auch 'throws Exception2' an die main schreibst, dann kompiliert es erstmal,
ob das so sinnvoll ist ohne Wissen, ohne Bedenken usw., sei dahingestellt,
dann könntest du auch gleich bei RuntimeException bleiben,

vielleicht ne Aufgabe, ob das die Lösung sein sollte lasse ich bewußt ohne genaue Bewertung

> als mir bei eclips vorgeschlagen wurde diese Zeile:[..] zu verbessern, kam das raus:
für main müsste derselbe Vorschlag kommen
 

Oben