Aufgabe zum Thema Softwaretest < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 19:44 Do 03.04.2008 | Autor: | RalU |
Aufgabe | Hallo! Es geht um folgende Aufgabe:
Es soll eine Java-Methode mit 3 Argumenten entwickelt werden. Diese 3 Elemente stehen für die Seiten eines Dreiecks. Die Methode soll klären, ob es sich um ein schleichschenkliges, gleichseitiges, ungleichseitiges Dreieck handelt (gillt für zulässige Eingaben).
Es sollen mit Ausnahmen folgende Fehlersituationen agefangen werden:
Ausnahme "ungültiger Wert", wenn gilt:
Mindestens ein Argument ist
- kleiner oder gleich 0 oder
- nicht vorhanden oder
- nicht ganzzahlig oder
- größer als das systembedingte Maximum
Weiterhin soll eine Exception "Kein Dreieck" geworfen werden, wenn gilt:
Die Argumente erfüllen die Dreiecksungleichung nicht, also
a+b<=c oder b+c<=a oder a+ c<=b
|
Meine Frage ist nun Folgende: Auf Grund der relativ schwierigen Möglichkeit, mittels Tastatur (Buffered Reader, InputStreamReader, etc) Eingaben in Java vorzunehmen, weiß ich nicht genau, wie man vorgeht, um sagen zu können: "Es wurde der und der Datentyp eingegeben!" Denn dann könnte man ja oben genannte Ausnahme auslösen...
Viel besser ist es doch, wenn man von anfang an klarstellt, welche Datentypen eingegeben werden sollen und welche nicht. Aber dann kann die Aufgabe nicht gelöst werden, weil in diesem Fall ja dann keine Ausnahme auftritt.
Weiterhin bin ich ratlos, wie ich es denn anstellen soll, um einen Parameter "nicht einzugeben" innerhalb der Tastatureingabe. Denn solange nichts eingegeben wird, steht das Programm ja und wartet eben auf eine Eingabe...
Aber es soll ja eine Exception ausgelöst werden, wenn ein Parameter nicht eingegeben wurde...
Hat jemand eine Idee, wie ich an diese Aufgabe und vor allem an die oben genannten Fehlersituationen und Exceptions besser herangehen kann? Die Syntax von Java, Exceptions-Handling, etc. dürfte mir bekannt sein.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 21:02 Do 03.04.2008 | Autor: | Infinit |
Hallo,
die Übergabe der eingelesenen Werte an die Methode geschieht ja über die Parameterliste der Methode. Dort wird ja auch der Typ angegeben und somit kannst Du in der Methode die gewünschten Checks durchführen und Exceptions auslösen.
Was nun den Fall eines fehlenden Inputs anbelangt, dieser bedeutet ja nur, dass keine Eingabe stattfindet, aber im Konsolenprogramm ist dies gleichbedeutend mit einem "Return". Beim Einlesen mit "in.Readline()" wird dieses Return aus dem Eingabepuffer automatisch entfernt und damit auch nicht an die Methode weitergereicht.
Viel Erfolg,
Infinit
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 10:29 Fr 04.04.2008 | Autor: | RalU |
Aufgabe | Ok, ich weiß nicht, ob ich so ganz verstanden habe, was du meinst mit "alle gewünschten Checks innerhalb der Methode durchführen".
|
Angenommen, ich habe folgende Programmstruktur:
public Class Triangle{
...
public static void main(String args[])
{
/*
hier will muss ich ja irgendwie meine Eingaben für die
3 Parameter (a,b,c) vom Benutzer anfordern,
befor ich dann den Aufruf
withTriangle(a,b,c)
durchführe
Also kommt es doch schon vor dem Aufruf der Methode
an dieser Stelle zu den möglichen Fehlersituationen
und ich muss HIER meine Exceptions werfen
und nicht erst in der Methode withTriangle(a,b,c) selbst
*/
}
}
Nur mal als Beispiel angenommen, ich lese einen Parameter zu wenig ein, was ja einem Return auf Konsolenebene gleichkommt, dann kann ich die Methode withTriangle(a,b,c)
erst gar nicht aufrufen, also kann ich auch nicht innerhalb der Methtode withTriangle(a,b,c) auf diese Ausnahme reagieren...
Naja, also, vielleicht kannst du mir noch ein paar Tipps geben???
Vielen Dank für die Hilfe...
Gruß, Ralf
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 14:47 Sa 05.04.2008 | Autor: | Infinit |
Hallo Ralf,
ich gebe Dir recht, dass bei Deinem Beispiel der Check vor Aufruf der Methode sicher sinnvoller ist, da nicht unbedingt alle Parameter zur Verfügung stehen. Das Ganze wird in eine try{}....catch{}-Umgebung eingepackt und damit müssten die Ausnahmen handhabbar werden.
Viele Grüße,
Infinit
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 13:54 Fr 04.04.2008 | Autor: | bazzzty |
> Hallo! Es geht um folgende Aufgabe:
>
> Es soll eine Java-Methode mit 3 Argumenten entwickelt
> werden. Diese 3 Elemente stehen für die Seiten eines
> Dreiecks. Die Methode soll klären, ob es sich um ein
> schleichschenkliges, gleichseitiges, ungleichseitiges
> Dreieck handelt (gillt für zulässige Eingaben).
> Es sollen mit Ausnahmen folgende Fehlersituationen
> agefangen werden:
> Ausnahme "ungültiger Wert", wenn gilt:
> Mindestens ein Argument ist
> - kleiner oder gleich 0 oder
> - nicht vorhanden oder
> - nicht ganzzahlig oder
> - größer als das systembedingte Maximum
> Weiterhin soll eine Exception "Kein Dreieck" geworfen
> werden, wenn gilt:
> Die Argumente erfüllen die Dreiecksungleichung nicht,
> also
> a+b<=c oder b+c<=a oder a+ c<=b
>
> Meine Frage ist nun Folgende: Auf Grund der relativ
> schwierigen Möglichkeit, mittels Tastatur (Buffered Reader,
> InputStreamReader, etc) Eingaben in Java vorzunehmen, weiß
> ich nicht genau, wie man vorgeht, um sagen zu können: "Es
> wurde der und der Datentyp eingegeben!" Denn dann könnte
> man ja oben genannte Ausnahme auslösen...
Wenn die Aufgabe ist, eine Methode zu schreiben, die auf bestimmte Eingaben mit Exceptions reagiert, dann ist mir nicht klar, warum man überhaupt Tastatureingaben braucht. Die Aufage ist doch nicht, ein Programm zu schreiben, was man ausführen kann, sondern eine Methode.
Was spricht denn dagegen, einfach diese Methode zu schreiben und fertig?
Wenn Du die Methode testen willst, dann eben per JUnit-Tests oder ähnlichem.
|
|
|
|