ich habe ein kleines Verständnisproblem mit einer Aufgabe aus dem Studium. Der Prof nutzt leider auch keine englischen Begriffe sondern "deutscht" sie ein wodurch es teilweise noch komplizierter wird.
Erstellen Sie eine Klasse MyExceptionHandling. Diese Klasse hat eine Methode
main und eine Methode dividiere.
Die Methode void dividiere(int [ ] a, int i) hat 2 Argumente: die Reihung a und den Parameter i, der den Index eines Elementes in a angibt. Es wird folgende Division vorgenommen:
a[i+1] = a[i+2] / a;
main hat als lokale Variable eine Reihung a mit den Elementen 2,8,32, 0,11.
main gibt als erstes die Reihung a aus. Dann ruft main die Methode dividiere in einer Laufanweisung von 0 bis 5 auf, wobei die Laufvariable den Parameter i von
dividiere darstellt. Danach wird die Reihung wieder ausgegeben. Hat
sich die Reihung a verändert? Warum?
Beachten Sie, dass in dieser Aufgabe mehrere Ausnahmen (welche?) auftreten können, dieaufgefangen werden sollen.
Überlegen Sie sich verschiedene Strategien zum Auffangen der in der Methode
dividiere verursachten Ausnahmen (z.B. das Auffangen innerhalb der Methode
dividiere oder beim Aufruf von dividiere in der Methode main).
Wäre jemand hier so freundlich mir nur die Formel zu erklären Array ausgeben kein Problem. Das mit den Exceptions kriege ich auch hin und habe es verstanden. Aber soll ich nun die Elemente des Array durch die einzelnen Elemente des Array dividieren? Sollen die 5 Zahlen einfach nur oben in die Formel eingeboxt und ausgerechnet werden? Ich habe anscheinend ein Verständnisproblem...
Nein. Du sollst die Methode dividiere in einer Schleife aufrufen die von 0..5 läuft.
Die Methode dividiere(int[] a, int i) soll nur die Formel ausführen
Java:
a[i+1]= a[i+2]/ a[i];
Im Endeffekt sollst du also die Methode 6 mal mit folgenden Parametern aufrufen:
Du kannst ja erst mal das machen was @Robat dir oben beschrieben hat ohne dich um Exception Handling zu kümmern. Dann wirst du schon sehen welche Exceptions so nach und nach fliegen
public void dividiere (int [] a, int i){
for (int i;i < 5;i++) {
a[i+1] = a[i+2] / a[i];
}
public static void main(String[] args) {
int[] a = {2,8,32,0,11};
int i = 0;
System.out.println(Arrays.toString(a));
dividiere(a);
}
Warum bekomme ich diese Fehlermeldung The method dividiere(int[], int) in the type Exc is not applicable for the arguments (int[])...
2 Wochen nix in Java gemacht und ich fühle mich wie der letzte Idiot... Ich verstehe die Fehlermeldung so, dass das Array aus der Main Methode nicht in dividiere verarbeitet werden kann.
Wie übergebe ich nun denn die erste Zahl aus dem Array (2) und teile sie durch Null? Ich weiß, dass da ein Fehler rumkommt den ich dann mit Exception Handling fangen und verarbeiten muss... aber es passiert ja garnix bei mir außer Fehlermeldungen... [/i]
Na ja, deine Methode sieht so aus: dividiere (int [] a, int i)
Und so rufst du die auf: dividiere(a);
Und die Variable i von (int [] a, int i) wird nicht funktionieren wenn du in der Methode eine Schleife hast wie du sieht Implementiert hast.
Es gibt dann zwei Variablen mit dem namen iund das sollte die deine IDE auch zeigen.
Die deklaration von i in der Schleife ist nicht notwendig. Mache also das int weg.
main:
erstelle ein Array und fülle es mit zahlen
für jedes i von 0 bis 5
rufe dividiere mit dem array und i auf
gib das array auf der Konsole aus
dividiere:
für a an der Stelle i+1:
berechne a an der Stelle i+2 DURCH a an der Stelle i