diff --git a/part1/.classpath b/part1/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..145a6719a9e10a10e1655c85a25bba4df334717b --- /dev/null +++ b/part1/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/part1/.project b/part1/.project new file mode 100644 index 0000000000000000000000000000000000000000..ec3ae6a60c3ffea57d99f6d4e9087413334bd9a0 --- /dev/null +++ b/part1/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>part1</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/part1/.settings/org.eclipse.jdt.core.prefs b/part1/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..ec1937b3f30e922b06a79700ca21836dbf53bf2f --- /dev/null +++ b/part1/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/part1/bin/triangle/InvalidTriangleException.class b/part1/bin/triangle/InvalidTriangleException.class new file mode 100644 index 0000000000000000000000000000000000000000..47f03a5e8bccb1509b8bcf20fe2faaac493da538 Binary files /dev/null and b/part1/bin/triangle/InvalidTriangleException.class differ diff --git a/part1/bin/triangle/Main.class b/part1/bin/triangle/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..87a894aaafc16fd817312b5ea6e49664a1e5d039 Binary files /dev/null and b/part1/bin/triangle/Main.class differ diff --git a/part1/bin/triangle/Triangle$TriangleType.class b/part1/bin/triangle/Triangle$TriangleType.class new file mode 100644 index 0000000000000000000000000000000000000000..821990969f6f05a19c69fbc20db186a3f9ef906a Binary files /dev/null and b/part1/bin/triangle/Triangle$TriangleType.class differ diff --git a/part1/bin/triangle/Triangle.class b/part1/bin/triangle/Triangle.class new file mode 100644 index 0000000000000000000000000000000000000000..1d98e0f4e605be48a4033adfa0218743551b6355 Binary files /dev/null and b/part1/bin/triangle/Triangle.class differ diff --git a/part1/bin/triangle/TriangleTest.class b/part1/bin/triangle/TriangleTest.class new file mode 100644 index 0000000000000000000000000000000000000000..1ff7d086e36d4dc5bbc665d2665475d97eb17956 Binary files /dev/null and b/part1/bin/triangle/TriangleTest.class differ diff --git a/part1/src/triangle/InvalidTriangleException.java b/part1/src/triangle/InvalidTriangleException.java new file mode 100644 index 0000000000000000000000000000000000000000..e4226af27dc0b4e587d9c6fa5bb88b5fd8dda0c2 --- /dev/null +++ b/part1/src/triangle/InvalidTriangleException.java @@ -0,0 +1,5 @@ +package triangle; + +public class InvalidTriangleException extends Exception { + +} diff --git a/part1/src/triangle/Main.java b/part1/src/triangle/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..592aacfadd07267a112d2a15f38fcd9e584503c9 --- /dev/null +++ b/part1/src/triangle/Main.java @@ -0,0 +1,37 @@ +package triangle; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Arrays; + +public class Main { + + public static void main(String[] args) throws InvalidTriangleException { + System.out.print("Enter the triangle side lengths: "); + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + final Triangle triangle = new Triangle(); + try { + final String readLine = br.readLine(); + System.out.println(readLine); + final String[] split = readLine.split("\\s+"); + int[] intSides = new int[split.length]; + int i = 0; + for (String string : split) { + try { + intSides[i++] = Integer.parseInt(string); + }catch(NumberFormatException e) { + System.err.println("invalid Input"); + } + } + triangle.setSides(intSides); + System.out.println(triangle.getType()); + } catch (InvalidTriangleException e) { + System.err.println("invalid triangle"); + } catch (IOException e) { + System.err.println("could not read from stdin"); + } + + } + +} diff --git a/part1/src/triangle/Triangle.java b/part1/src/triangle/Triangle.java new file mode 100644 index 0000000000000000000000000000000000000000..2edd6fc41306b9a887cc6ab3b9f8e3c1210f31f3 --- /dev/null +++ b/part1/src/triangle/Triangle.java @@ -0,0 +1,63 @@ +package triangle; + + +public class Triangle { + + public enum TriangleType { + Isosceles, Equilateral, Scalene, NaT; + + public String toString() { + return name(); + }; + } + + private int[] sides; + + public TriangleType getType() throws InvalidTriangleException + { + TriangleType result = TriangleType.NaT; + + if (sides.length != 3) { + //throw new InvalidTriangleException(); + return result; + } + + if (sides[0] > sides[1]) + swap(sides, 0, 1); + + if (sides[0] > sides[2]) + swap(sides, 0, 2); + + if (sides[1] > sides[2]) + swap(sides, 1, 2); + + if (sides[0] <= 0 || sides[2] - sides[0] >= sides[1]) { + throw new InvalidTriangleException(); + } + + if (sides[0] == sides[2]) { + result = TriangleType.Equilateral; + } else if (sides[0] == sides[1] || sides[1] == sides[2]) { + result = TriangleType.Isosceles; + } else { + result = TriangleType.Scalene; + } + + return result; + } + + private static void swap(int s[], int i, int j) { + int tmp = s[i]; + s[i] = s[j]; + s[j] = tmp; + } + + public int[] getSides() { + return sides; + } + + public void setSides(int[] sides) { + this.sides = sides; + } + +} diff --git a/part1/src/triangle/TriangleTest.java b/part1/src/triangle/TriangleTest.java new file mode 100644 index 0000000000000000000000000000000000000000..b7bcb14739c011cdc447df6fc4091fca14099333 --- /dev/null +++ b/part1/src/triangle/TriangleTest.java @@ -0,0 +1,49 @@ +package triangle; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class TriangleTest { + private triangle.Triangle triangle; + + @BeforeEach + public void setUp() { + triangle = new triangle.Triangle(); + } + + @Test + public void testException() throws InvalidTriangleException { + final int[] is = new int[]{1, -1, 1}; + triangle.setSides(is); + Assertions.assertThrows(InvalidTriangleException.class, ()->triangle.getType()); + } + + @Test + public void testEquilateral() throws InvalidTriangleException { + final int[] is = new int[]{1, 1, 1}; + triangle.setSides(is); + Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.Equilateral); + } + + @Test + public void testIsosceles() throws InvalidTriangleException{ + final int[] is = new int[]{3, 3, 2}; + triangle.setSides(is); + Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.Isosceles); + } + + @Test + public void testScalene() throws InvalidTriangleException{ + final int[] is = new int[]{4, 5, 6}; + triangle.setSides(is); + Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.Scalene); + } + + @Test + public void testNat() throws InvalidTriangleException{ + final int[] is = new int[]{1, 1, 2, 5}; + triangle.setSides(is); + Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.NaT); + } +}