Aufgabe Array, Exception

coldstone

Bekanntes Mitglied
Hallo frende,

habe folgende aufgabe zu lösen:


Java:
public static void test(int i, int j) throws Exception {
int[] a = { 5, 4, 3, 2, 1 };
try {
System.out.println("A");
if (i == 0) {
i = ++j - a[j];
System.out.println(j);
} else {
System.out.println(a[i++]);
int x = j / i;
System.out.println(a[x]);
}
} catch (Exception e) {
System.out.println("B");
test(-j, -j);
} finally {
System.out.println(a[i]);
System.out.println("C");
}
}

Welche Ausgabe liefern die folgenden Aufrufe von test?


test (3,1)

HIer ist doch bestimmt die komponenten gemeint oder? Also in diesem fall für x = 3 und für y = 5. Richtig?
 

coldstone

Bekanntes Mitglied
Habe ich versucht, kriege aber die testmethode nicht hin.

Habe eine Klasse aufgabe erstellt:

Java:
public class aufgabe {
	
	public static void test(int i, int j) throws Exception {
		int[] a = { 5, 4, 3, 2, 1 };
		try {
		System.out.println("A");
		if (i == 0) {
		i = ++j - a[j];
		System.out.println(j);
		} else {
		System.out.println(a[i++]);
		int x = j / i;
		System.out.println(a[x]);
		}
		} catch (Exception e) {
		System.out.println("B");
		test(-j, -j);
		} finally {
		System.out.println(a[i]);
		System.out.println("C");
		}
	}
	
	
}



ich kriege aber keine testmethode hin.
 

HimBromBeere

Top Contributor
du brauchst in deiner main doch nur
Java:
test(3, 1)
schreiben...

EDIT: Den catch-Block natürlich nicht vergessen...
 

coldstone

Bekanntes Mitglied
Java:
public class aufgabetest {
	
	
	public static void main(String[] args) {
		
		test(3,1);
	}

}

???? geht nicht. compiler fehler.
 

HimBromBeere

Top Contributor
Java:
public class Leerprogramm {    
    public static void main (String[] args) {
       try {test(3, 1);} 
       catch (Exception e) {e.printStackTrace();}
    } 
    
    
    public static void test(int i, int j) throws Exception {
    	int[] a = { 5, 4, 3, 2, 1 };
    	try {
	    	System.out.println("A");
	    	if (i == 0) {
		    	i = ++j - a[j];
		    	System.out.println(j);
	    	} else {
		    	System.out.println(a[i++]);
		    	int x = j / i;
		    	System.out.println(a[x]);
	    	}
    	} catch (Exception e) {
	    	System.out.println("B");
	    	test(-j, -j);
    	} finally {
	    	System.out.println(a[i]);
	    	System.out.println("C");
    	}
    }
    
}
 

coldstone

Bekanntes Mitglied
Alles klar habs jetzt.

Java:
public class aufgabe {
	
	
	public static void main(String[] args) throws Exception {
		
		test(3,1);
	}


		public static void test(int i, int j) throws Exception {
			int[] a = { 5, 4, 3, 2, 1 };
			try {
			System.out.println("A");
			if (i == 0) {
			i = ++j - a[j];
			System.out.println(j);
			} else {
			System.out.println(a[i++]);
			int x = j / i;
			System.out.println(a[x]);
			}
			} catch (Exception e) {
			System.out.println("B");
			test(-j, -j);
			} finally {
			System.out.println(a[i]);
			System.out.println("C");
			}
		}
		
	}
 

coldstone

Bekanntes Mitglied
Es kommen die werte A,2,5,1,C raus.

"A" und "2" sind nachvollziehbar, aber wie kommt man an die "5"?

Es wird ja der else Block ausgeführt da i ungleich 0 ist.

Java:
.
.
.
else {
            System.out.println(a[i++]);
            int x = j / i;
            System.out.println(a[x]);
.
.
.

"2" wird ja durch

Java:
System.out.println(a[i++]);
ausgegeben.

"i" wird doch weiterhin als "2" gespeichert, oder bewirkt "System.out.println(a[i++]);" das i = als 3 gespeichert wird? Dies ist doch nur für die Ausgabe, oder?
Aber bei beiden fällen würde doch "int x = j / i;" eine Exception auslösen. Somit währe die nächste Ausgabe ja "B".
Aber in unserem fall ja leider nicht. Was mache ich bei der Denkweise denn falsch???
 

HimBromBeere

Top Contributor
Hast du dir den Link von Kiri mal durchgelesen? Da steht´s drin (Stichwort finally).

EDIT: int x = i / j wirft keine Exception, da ist eine ganz normale Int-Division (wenn i = 4 und j = 1 --> int (1 / 4) = 0)
 
Zuletzt bearbeitet:

coldstone

Bekanntes Mitglied
Aber wenn ich eine Exception auslöse, wird denn dann nicht der block in Exception bearbeitet?

In diesem Fall:

Java:
catch (Exception e) {
            System.out.println("B");
            test(-j, -j);

???
 

HimBromBeere

Top Contributor
Ja, aber du "löst" ja keine Exception aus... wie bereits gesagt: der Ausdruck int x = i / j produziert keine Exception (es sei denn, j wäre null, was aber nicht der Fall ist). Also wird auch nicht der catch-Block ausgeführt und die Anwendung setzt mit finally fort.
 

coldstone

Bekanntes Mitglied
Hätte noch eine frage. Undzwar die array werte im finally block beziehen sich doch immer auf die Ursprungswerte oder?
Ich mein die veränderung der Werte im try block hat letztenendes keine auswirkung auf den finally block?
 

HimBromBeere

Top Contributor
Was sagt dir denn deine Ausgabe? Ist das so oder ist das nicht so?

EDIT: Also bei mit ist i im finally-Block 4, vlcht. ist es bei dir ja anders..
 
Zuletzt bearbeitet:

coldstone

Bekanntes Mitglied
MeineAusgabe sagt mir das der finally Block sich auf die Ursprungswerte bezieht und nicht mit verändert wird. Wollte aber sicher gehen!
 

coldstone

Bekanntes Mitglied
Das der finally block unverändert bleibt da ich ja "1" rausbekomme! Würde der finally block abhängig von den veränderungen der try blöcke sein, wäre es ja

Java:
System.out.println(a[3]);

somit wäre die ausgabe "2". Richtig?
 

Kiri

Bekanntes Mitglied
Dein Ursprungswert ist i=3 und im finally ist es dann i=4. Aus meiner sicht verändert sich der Wert.

Vielleicht machst du doch lieber Feierabend und schaust dir das morgen nochmal an.
 

coldstone

Bekanntes Mitglied
Wenn ich noch eine frage fragen darf.

Bei test (4,2) bekomme ich die werte A,1,5 und dann eine exception fehlermeldung:

undzwar:
Java:
Exception in thread "main" java.lang.Arra
        at aufgabe.test(aufgabe.java:25)
        at aufgabe.main(aufgabe.java:4)

Müsste er aber nicht

Java:
.
.
catch (Exception e) {
        System.out.println("B");
        test(-j, -j);
        } finally {
        System.out.println(a[i]);
        System.out.println("C");
        }

ausführen???
 

Kiri

Bekanntes Mitglied
Wenn ich noch eine frage fragen darf.

Bei test (4,2) bekomme ich die werte A,1,5 und dann eine exception fehlermeldung:

undzwar:
Java:
Exception in thread "main" java.lang.Arra
        at aufgabe.test(aufgabe.java:25)
        at aufgabe.main(aufgabe.java:4)

Müsste er aber nicht

Java:
.
.
catch (Exception e) {
        System.out.println("B");
        test(-j, -j);
        } finally {
        System.out.println(a[i]);
        System.out.println("C");
        }

ausführen???


nein, dein Fehler tritt erst im Finally auf, also außerhalb des Try-/Catch- und zwar genau hier:

Java:
finally {
System.out.println(a[i]);

weil i=5 ist, das Array aber nur von i=0 bis i=4 geht!
 

coldstone

Bekanntes Mitglied
Aber müsste dann dieser fehler, nicht diese Anweisung ausführen lassen?

Java:
.
.
catch (Exception e) {
        System.out.println("B");
        test(-j, -j);
.
.

Also somit "B" ausgeben und mit test(-j,-j) weiterarbeiten?
 

coldstone

Bekanntes Mitglied
Letzte test Analyse, dann reichts auch für heute.

mit test (1,-2)

bekomme ich A,4,B usw.

Aber ich komme auf A,3,B usw.

A wird ja als erstes ausgegeben, aber i = 1, deswegen gehts mit dem else Block weiter.

Java:
.
.
else {
System.out.println(a[i++]);
int x = j / i;
System.out.println(a[x]);
}
.
.

und bei mir wäre
Java:
System.out.println(a[2]);

somit müsste doch die Ausgabe "3" sein. Aber der compiler spuckt 4 aus.
 

Kiri

Bekanntes Mitglied
nein i++ bedeutet, das i=1 benutzt wird und erst danach wird i inkrementiert.

bei ++i wird erst i inkrementiert und dann i=2 benutzt.

probiere es mal aus
 

coldstone

Bekanntes Mitglied
Bin schon soweit gekommen:

A
4
B
A
3
5 ????


wie kommt die fünf zustande?

Beim ersten durchlauf wird eine Exception ausgelöst.
"B" wird ausgegeben und test ( -j,-j) wird gestartet. Was bewirkt eigentlich zweimal "-j"?
Da Exception ausgelöst wird durch int x = -2 / 2, und System.out.println(a[-1]) im else block, fahre ich dann mit dem Wert (-j / -j) fort oder mit dem wert von "i" das als letztes gespeichert ist?
test (-j / -j) bringt mich bischen durcheinander!

Hat sich erstmal erledigt. :D
 
Zuletzt bearbeitet:

coldstone

Bekanntes Mitglied
OK

Meine Lösung:

A,4,B,A,3,5,2,C

Compiler Lösung:

A,4,B,A,3,5,2,C,3,C

Wurde auch schon in dem anderen Beitrag besprochen aber ohne erfolg.

Wiese wird finally 2 mal ausgelöst?
 
G

Gast2

Gast
finally wird immer ausgeführt. Ganz egal ob ne Exception fliegt oder nicht. Selbst bei nem return würde finally noch ausgeführt zu werden.
 

Kiri

Bekanntes Mitglied
beim ersten durchlauf wird der erste Testdurchlauf VOR dem finally unterbrochen, dann wird der zweite Testdurchlauf komplett abgearbeitet (da es hier keine Exception gibt) und danach wird das finally des ersten Testdurchlaufs nachgeholt
 

coldstone

Bekanntes Mitglied
OK, also wenn zwischendurch finally erreicht wird, wird er gemerkt und die restlichen Durchläufe erst abgearbeitet. Danach wird finally mit den gemerkten finally werten ausgegeben und am schluss nochmals ausgegeben. Richtig?

Wenn ich einen noch komplexeren Quellcode hätte, würde er sich immer den finally block mit den aktuellen Werten merken und ganz am schluss alle finally blöcke hintereinander ausgeben. Korrekt?
 

Kiri

Bekanntes Mitglied
Korrekt!

(Aber in anbetracht der späten Stunden gebe ich keine Garantie mehr auf irgendeine Gehirnleistung ;) Gute N8)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Hilfe - Array Aufgabe Java Basics - Anfänger-Themen 8
I Methoden char Array Aufgabe (bitte hierbei um Hilfe) Java Basics - Anfänger-Themen 3
H array aufgabe Java Basics - Anfänger-Themen 13
H Array aufgabe Java Basics - Anfänger-Themen 7
F Problem mit der Aufgabe(Array) Java Basics - Anfänger-Themen 21
M Hilfe bei array Aufgabe. Java Basics - Anfänger-Themen 2
T Array Aufgabe so richtig ? Java Basics - Anfänger-Themen 8
E OOP einfache Array Aufgabe mit jUnit Java Basics - Anfänger-Themen 5
S Array in Aufgabe einbauen Java Basics - Anfänger-Themen 12
M Aufgabe: Array auf doppelte Zahl prüfen Java Basics - Anfänger-Themen 8
Jere58 Aufgabe zu Mustern Java Basics - Anfänger-Themen 1
M Interfaces Aufgabe Java Basics - Anfänger-Themen 2
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
Justin4687 Benötige Hilfe bei folgender Aufgabe Java Basics - Anfänger-Themen 2
A Erste Schritte Aufgabe mit while Schleife Java Basics - Anfänger-Themen 11
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
R Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
Mikejr Java Berg aufgabe Java Basics - Anfänger-Themen 6
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
Neuling47 Ich zerbreche mit den kopf an einer Aufgabe Java Basics - Anfänger-Themen 61
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
T Informatik Studium Aufgabe Java Basics - Anfänger-Themen 4
T Aufgabe Informatik Studium Java Basics - Anfänger-Themen 10
I matrix aufgabe Java Basics - Anfänger-Themen 22
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
9 Aufgabe Bruttorechner Java Basics - Anfänger-Themen 14
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
J boolean aufgabe Java Basics - Anfänger-Themen 9
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
StevenGG Aufgabe im Studium Java Basics - Anfänger-Themen 36
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
S Schulaufgabe - verstehe leider die Aufgabe nicht Java Basics - Anfänger-Themen 4
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
R Eclipse Aufgabe Java Basics - Anfänger-Themen 4
J OOP-Aufgabe Java Basics - Anfänger-Themen 15
Helix19 Informatik Grundkurs (Haus-)Aufgabe Java Basics - Anfänger-Themen 5
P eine kleine Aufgabe mit Audio Java Basics - Anfänger-Themen 1
TimoN11 Verständnisfrage bei Aufgabe Java Basics - Anfänger-Themen 2
TimoN11 Java spezielle Suchprobleme - Aufgabe Java Basics - Anfänger-Themen 5
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 2
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 9
dieter000 Aufgabe Hilfe Java Basics - Anfänger-Themen 18
jonathanpizza Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
Q Hilfe auf Aufgabe(Matrixmultiplikation) Java Basics - Anfänger-Themen 1
jonathanpizza Hilfe bei der Aufgabe Java Basics - Anfänger-Themen 19
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
C Rechnungen-Aufgabe Java Basics - Anfänger-Themen 18
C Biene-Aufgabe Java Basics - Anfänger-Themen 2
K Algorithmen und Datenstrukturen Programmier Aufgabe Java Basics - Anfänger-Themen 10
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
T Aufgabe Flussdiagramm, kann jemand checken? Java Basics - Anfänger-Themen 8
B Methoden Ausgeben Aufgabe Java Basics - Anfänger-Themen 15
M Lösung Aufgabe - Java Programmiren lernen für Dummies Java Basics - Anfänger-Themen 11
J Rekursion Klausur Aufgabe Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
F Aufgabe: Abstand von einem Punkt zu einem anderen Punkt Java Basics - Anfänger-Themen 10
T Aufgabe zum Verschlüsselungsalgorithmus Java Basics - Anfänger-Themen 11
J Erste Schritte Aufgabe Java Basics - Anfänger-Themen 24
T Methoden BinaryTree transformieren Aufgabe Java Basics - Anfänger-Themen 36
J Brauche Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 1
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
S Sortieralgorithmus - Aufgabe mit Lösungsidee Java Basics - Anfänger-Themen 20
A Aufgabe: Gleitkommazahlen Java Basics - Anfänger-Themen 3
A Java-Programmierungs Aufgabe Java Basics - Anfänger-Themen 2
U Aufgabe zu Kontrollstrukturen Java Basics - Anfänger-Themen 8
G Probleme bei Aufgabe Java Basics - Anfänger-Themen 12
J Aufgabe als Feuertaufe Java Basics - Anfänger-Themen 8
S Unbedingte hilfe bei Java Aufgabe [Schleife / Zinsrechnung] Java Basics - Anfänger-Themen 14
J Hilfe bei Java Aufgabe (Restschuld berechnen) Java Basics - Anfänger-Themen 11
G Ratlosigkeit zur Aufgabe im Anhang (boolean, equals.) Java Basics - Anfänger-Themen 20
S Hilfe bei Java Aufgabe (Schleifen) Java Basics - Anfänger-Themen 25
B Probleme bei einer Aufgabe Java Basics - Anfänger-Themen 19
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
H aufgabe 4 Java Basics - Anfänger-Themen 297
M Hilfe bei Projektorientierungs-Aufgabe !! Java Basics - Anfänger-Themen 3
J Java Starthilfe Verständnisfrage Aufgabe Java Basics - Anfänger-Themen 2
H java aufgabe Java Basics - Anfänger-Themen 7
E Mathematische Aufgabe: Antwort entspricht nicht der Lösung Java Basics - Anfänger-Themen 5
H was verlangt die aufgabe ? Java Basics - Anfänger-Themen 10
H java aufgabe Java Basics - Anfänger-Themen 68
H java aufgabe Java Basics - Anfänger-Themen 25
H aufgabe java luhn algorithmus Java Basics - Anfänger-Themen 10
R Java Aufgabe (Teilbarkeit) Java Basics - Anfänger-Themen 7
H java aufgabe Java Basics - Anfänger-Themen 44
H java aufgabe Java Basics - Anfänger-Themen 7
H java string aufgabe Java Basics - Anfänger-Themen 10
D Erste Schritte Lösen dieser Aufgabe, Hilfe! Java Basics - Anfänger-Themen 12
H aufgabe Java Basics - Anfänger-Themen 9
H lösung aufgabe Java Basics - Anfänger-Themen 12
S Hilfe für Aufgabe Java Basics - Anfänger-Themen 4
H java online aufgabe Java Basics - Anfänger-Themen 4
H oop aufgabe probe kalusur Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben