Habe folgendes Problem:
Habe die Aufgabe bekommen, eine Klasse Triangle zu schreiben, mit der man ein Dreieck erzeugen kann, welches sofort dessen Typ ausgibt. Unser Prof hat uns die nocht nicht implementierten Methoden zur Verfügung gestellt und wir sollen diese so bearbeiten wie es vorgeben ist.
Folgendermaßen habe ich bis jetzt angefangen:
privatevoidcheckIntegrity()throwsIllegalArgumentException{if(a<=0|| b<=0|| c<=0){thrownewIllegalArgumentException("Die Seiten eines Dreiecks dürfen nicht <= 0 sein!");}if(a+b<c || b+c<a || a+c<b){thrownewIllegalArgumentException("Die Summe 2er Seiten darf nicht kleiner als die 3. Seite sein!");}}
Nun Liegt mein Problem bei "determineType". Vorm Konstruktor wurde folgendes gemacht:
Java:
publicstaticenum TYPE {
ISOSCELES /* gleichschenklig */, EQUILATERAL /* gleichseitig */, SCALENE /* ungleichseitig */};privatefinalint a, b, c;privateTYPE type;
Ich schätze mal in determineType wird dann wohl gefordert, dass wir das enum abarbeiten. Allerdings habe ich das noch nie wirklich benutzt und habe absolut keine Ahnung wie ich damit nun die Variable Typ auf Gleichschenklig, gleichseitig oder ungleichseitig stelle.
Würde mich sehr über kleine Denkanstöße und Hilfen freuen!
Ja klar! Hier nochmal der ganze, bereits abgenommene Code:
Java:
package triangle;publicclassTriangle{publicstaticenum TYPE {
ISOSCELES /* gleichschenklig */, EQUILATERAL /* gleichseitig */, SCALENE /* ungleichseitig */};privatefinalint a, b, c;privateTYPE type;/**
* @param a
* length of side a of the triangle
* @param b
* length of side b of the triangle
* @param c
* length of side c of the triangle
*/publicTriangle(int a,int b,int c){this.a = a;this.b = b;this.c = c;this.checkIntegrity();this.determineType();}/**
* Checks the integrity of the triangle
*
* @throws {@link IllegalArgumentException} if the side lengths do not describe a triangle
*/privatevoidcheckIntegrity()throwsIllegalArgumentException{if(a<=0|| b<=0|| c<=0){thrownewIllegalArgumentException("Die Seiten eines Dreiecks dürfen nicht <= 0 sein!");}if(((long)a+(long)b)<=c ||((long)b+(long)c)<=a ||((long)a+(long)c)<=b){thrownewIllegalArgumentException("Die Summe 2er Seiten darf nicht kleiner als die 3. Seite sein!");}}/**
* Determines the type of a triangle, depending on its side lengths
*
* @return EQUILATERAL => all sides are equal in length, ISOSCELES => two
* sides are equal in length, SCALENE => all sides are unequal
*/privatevoiddetermineType(){if(a == b && a == c){this.type = TYPE.EQUILATERAL;}elseif(a == b || b == c || a == c){this.type = TYPE.ISOSCELES;}else{this.type = TYPE.SCALENE;}}publicTYPEgetType(){returnthis.type;}/**
* Creates new triangle instance
*
* @param sides
* string array which contains the length of all three sides of
* the triangle
* @return new triangle instance
*
* @throws {@link IllegalArgumentException} if the sides array does not represent a triangle
*/publicstaticTrianglecreateTriangle(String[] sides)throwsIllegalArgumentException{if(sides.length !=3){thrownewIllegalArgumentException();}returnnewTriangle(Integer.parseInt(sides[0]),Integer.parseInt(sides[1]),Integer.parseInt(sides[2]));}/**
* Returns the {@link TYPE} of the triangle in german
*
* @return german string representation for the given {@link TYPE}:
* EQUILATERAL => "gleichseitig", ISOSCELES => "gleichschenklig",
* SCALENE => "ungleichseitig"
*/@OverridepublicStringtoString(){switch(this.getType()){case EQUILATERAL:return"gleichseitig";case ISOSCELES:return"gleichschenklig";case SCALENE:return"ungleichseitig";default:return"ungültig";}}publicstaticvoidmain(String[] args){System.out.println(createTriangle(args));}}
publicstaticenum TYPE {
ISOSCELES /* gleichschenklig */, EQUILATERAL /* gleichseitig */, SCALENE /* ungleichseitig */};privatefinalint a, b, c;privateTYPE type;
Ich schätze mal in determineType wird dann wohl gefordert, dass wir das enum abarbeiten. Allerdings habe ich das noch nie wirklich benutzt und habe absolut keine Ahnung wie ich damit nun die Variable Typ auf Gleichschenklig, gleichseitig oder ungleichseitig stelle.