8.2 Teste Berechne

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

8.2 Teste Berechne
Hallo zusammen,

ich habe eine Frage zur 8.2 Teste Berechne. Es ist verlangt je zwei Testmethoden zu erstellen wo jeweils nur eine Art von Fehler erzeugt werden darf.

Heißt das dann auch, wenn z.b. ein Überlauf erzeugt wird und mit diesem (jetzt falschen) zwischenergebniss weitergerechnet wird, dann darf dieses ergeniss keine Ungenauigkeit provozieren?

Am Bsp. aus der Angabe (2147483640 + 10)/10 =
Der Klammerausdruck erzeugt den Überlauf auf -214748364 d.h. jetzt seht noch (-214748364)/10 da.
Dieser Ausdruck provoziert jetzt aber zusätzlich eine Ungenauigkeit, da -214748364/10 = -21474836,4 ist, wass abgenschnitten wird weil es sich um Integer handelt.

Danke Gruß
Stefan



Bezieht sich das gleichzeitig auf die einzelnen Berechnugnsschritte oder auf die komplette Methode?

Ich hatte den Satz aus der Angabe nähmlich so verstanden, dass pro Methodenaufruf entweder ein Über-/Unterlauf auftretendarf oder eine Ungenaukigkeit. Demnach ist das Beispiel aus der Angabe für einen Überlauf nicht verwendbar für die Lösung der Aufgabe da (2147483640 + 10)/10 beide Fehlerarten proviziert.

Habe ich das jetzt richtig verstanden oder stehe ich irgendwo auf dem Schlauch :huh:



Das Beispiel ist leider schlecht gewählt. Darüber hinaus ist die Formulierung “nur eine Fehlerart” unglücklich.

Sorgt dafür, dass der erste Fehler der Auftritt, der ist, den ihr abtesten wollt. Sollte der jetzt übergelaufene/ungenaue Wert in folgenden Berechnungsschritten zu weiteren Fehlern führen ist das kein Problem (solange keine Exceptions auftreten).

Viele Grüße
Hannes (der Aufgabenersteller)


Dumme Frage; tut in BerechneA(…) die Schleife überhaupt irgendwas? Weil a ist ja ein Array übergebener Länge, und meines Wissens nach sind Arrays, sofern nicht anders zugewiesen, standardmäßig mit Nullen “befüllt”. Damit müsste die Schleife aber immer in den Fall Zeile 22 springen und auf x 0 addieren, oder? Oder heißt die Klammer hinter dem Array-Namen, dass das Array mit der entsprechenden Zahl befüllt ist?


Die Methode BerechneA ist für die Parameter int x, int[] a definiert. Das bedeutet insbesondere, dass null oder ein nicht leerer integer Array übergeben werden kann.
Unter anderem musst du / sollst du den Angaben entsprechende Test Methoden schreiben, die geeignete x, a übergeben.


Das heißt also, ich muss vorher a mit Zahlen füllen?


monti-kid, du scheinst da was grundlegend falsch zu verstehen.

Der Parameter steht allgemein für ein Array, wie es tatsächlich ausschaut, spielt (fast) gar keine Rolle.
Beispiel:

public class Test{
    public static int giveFirstElement(int[] array){
        return array[0];
    }

    public static void main(String args[]){
        int einArray[] = {42, 1, 3};
        System.out.println( giveFirstElement(einArray) ); //Die Ausgabe hier: 42

        int anderesArray[] = {-42, 33, 22, 88};
        System.out.println( giveFirstElement(anderesArray) ); //Die Ausgabe hier: -42
    }
}

Zurück zu der Aufgabe: Die Methode berechneA(…) führt eine Rechnung mit einem parametrisiertem Array aus.
Jetzt klar?