Java Standard: Lösungen Assertations

Lösungen zu den Übungen: Assertion

Bearbeiten

Diese Seite enthält die Lösungen zu den Übungen zur Java-Anweisung assert. Das zugehörige Kapitel finden Sie hier.

1: Ein switch()-Test

Bearbeiten

1.1: Die assert-Anweisung wertet den auf sie folgenden Ausdruck aus und löst sie nach true oder false auf. Diese Auflösung ist in diesem Fall nicht nötig: weil als Testergebnis gleich ein false gesetzt wurde wird das Programm immer dann abgebrochen, wenn die default-Option der switch-Anweisung erreicht wird.

1.2: Da keine Anweisung gegeben wurde, einen eigenen Text auszugeben, wird dem Programmierer beim Abbruch die Standard-Fehlermeldung bei assert-Anweisungen angezeigt. Um eine eigene Fehlermeldung zu erzeugen könnte man zum Beispiel das Folgende schreiben:

assert false : "Abbruch in der switch()-Anweisung wegen eines fehlerhaften Ergebnisses (nicht JA oder NEIN)";

2: Do it yourself

Bearbeiten

2.1: Der Code könnte etwa folgendermaßen aussehen:

public int diceTest() {
	private int summe = 0;
	private int result = 0;

	for(int n = 0; n< 100; n++) {
		result = dice():
		assert result >= 1 : "Würfelwurf kleiner als 1 registriert";
		assert result <= 6 : "Würfelwurf größer als 6 registriert";
		summe += result;
	}

	return summe;
}

2.2: Es wird der Test auf "Resultat >= 1" fehlschlagen, also der erste assert-Test ausgelöst. Der Grund ist die fehlerhafte Programmierung der Funktion dice() aus der Aufgabe: sie liefert nicht, wie behauptet, die Werte 1 bis 6 zurück, sondern 0 bis 5. Grund dafür ist die Funktion Math.random(). Sie liefert einen Wert zwischen 0 und 1 zurück. Durch den Cast des gelieferten double-Wertes von Math.random() zu einem (int)-Wert werden die Nachkommastellen abgeschnitten. In einem von sechs Fällen wird ein Wert unter ⅙ zurückgeliefert, so dass durch die fehlende Rundung beim Cast der Wert 0 zurückgeliefert wird.

Eine sauber programmierte Funktion dice() könnte also folgendermaßen aussehen:

public int dice() {
	return Math.min((int)(Math.random()*6)+1, 6);
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy